🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 订单的打回或终止 **位置:** Common\Lib\FlowLib.class.php **参数:** * @param $data array 订单信息(如:订单类型,订单ID,备注信息) * @param $type int 打回或终止 * @return bool 订单打回或终止返回提示信息 **调用:** * $flow = new FlowLib(); * $order_arr = $flow->orderStop($data, $type); **完整代码:** ~~~ /** * 订单的打回或终止 * @param $data array 订单信息 * @param $type int 操作类型:1、打回,2、终止 * @return int 打回订单返回类型 * whz 2018-01-25 * */ public function orderStop($data, $type) { M()->startTrans(); //1、查询之前是否有备足信息(因为备注公用一个字段,需要注意下样式换行) $remarkarr = M('wms_flow') ->field('remark') ->where(array('id'=>$data['id'])) ->find(); //2、打回订单备注信息 if ($type == 1) { if (!empty($remarkarr['remark'])) { $remarks = $remarkarr['remark'] . '<br/>打回订单备注:' . $data['remark']; } else { $remarks = '打回订单备注:' . $data['remark']; } $datas = array( 'id' => $data['id'], 'status' => 3, 'remark' => $remarks ); $msg = '打回失败!'; $description = '打回订单成功!'; } //3、终止订单备注信息 if ($type == 2) { if (!empty($remarkarr['remark'])) { $remarks = $remarkarr['remark'] . '<br/>终止订单备注:' . $data['remark']; } else { $remarks = '终止订单备注:' . $data['remark']; } $datas = array( 'id' => $data['id'], 'status' => 4, 'remark' => $remarks ); $msg = '终止失败!'; $description = '终止订单成功!'; } //4、改变订单状态 $res = M('wms_flow')->save($datas); if ($res === false) { M()->rollback(); return array('success'=>false, 'code'=>204, 'msg'=>$msg); } //5、打回订单,sku伪删除 $sku_id = M('wms_flow as r') ->field('u.id') ->join('coscia_wms_sku as u on r.id=u.order_id','left') ->where(array('r.id'=>$data['id'], 'u.is_delete'=>0)) ->select(); if (count($sku_id) > 0) { foreach ($sku_id as $k => $v) { $sku_delete = M('wms_sku') ->where(array('id'=>$v['id'])) ->save(array('is_delete'=>1)); if ($sku_delete === false) { M()->rollback(); return array('success'=>false, 'code'=>204, 'msg'=>'SKU伪删除失败!'); } } } //6、打回订单,唯一码伪删除 $no_id = M('wms_flow as r') ->field('u.id,u.no_id,u.type') ->join('coscia_wms_no as u on r.id=u.order_id','left') ->where(array('u.type'=>$data['order_type'], 'r.id'=>$data['id'], 'u.is_delete'=>0)) ->select(); if (count($no_id) > 0) { foreach ($no_id as $kk => $vv) { $no_delete = M('wms_no') ->where(array('id'=>$vv['id'])) ->save(array('is_delete'=>1)); if ($no_delete === false) { M()->rollback(); return array('success'=>false, 'code'=>204, 'msg'=>'唯一码伪删除失败!'); } //7、还原唯一码状态 if ($vv['type'] == 1 || $vv['type'] == 4) { $delivery = 1; } if ($vv['type'] == 2 || $vv['type'] == 3) { $delivery = 2; } $edit_no = M('goods_no') ->where(array('id'=>$vv['no_id'])) ->save(array('delivery_status'=>$delivery)); if ($edit_no === false) { M()->rollback(); return array('success'=>false, 'code'=>202, 'msg'=>'唯一码物流状态改变失败!'); } } } //7、记录打回订单日志 $add_log['description'] = $description; $add_log['order_id'] = $data['id']; $add_log['type'] = $data['order_type']; $ress = $this->addLog($add_log); if (!$ress) { M()->rollback(); return array('success'=>false, 'code'=>207, 'msg'=>'日志录入失败!'); } M()->commit(); return array('success'=>true, 'code'=>200, 'msg'=>$description); } ~~~