order_status = C('ORDER_STATUS'); $this->pay_status = C('PAY_STATUS'); $this->shipping_status = C('SHIPPING_STATUS'); // 订单 支付 发货状态 $this->assign('order_status',$this->order_status); $this->assign('pay_status',$this->pay_status); $this->assign('shipping_status',$this->shipping_status); } /** *订单首页 */ public function index(){ return $this->fetch(); } /** * Ajax首页 */ public function ajaxindex(){ $begin = $this->begin; $end = $this->end; // 搜索条件 $condition = array('shop_id'=>0); $keyType = I("key_type"); $keywords = I('keywords','','trim'); $consignee = ($keyType && $keyType == 'consignee') ? $keywords : I('consignee','','trim'); $consignee ? $condition['consignee'] = trim($consignee) : false; if($begin && $end){ $condition['add_time'] = array('between',"$begin,$end"); } $condition['prom_type'] = array('lt',5); $order_sn = ($keyType && $keyType == 'order_sn') ? $keywords : I('order_sn') ; $order_sn ? $condition['order_sn'] = trim($order_sn) : false; I('order_status') != '' ? $condition['order_status'] = I('order_status') : false; I('pay_status') != '' ? $condition['pay_status'] = I('pay_status') : false; //I('pay_code') != '' ? $condition['pay_code'] = I('pay_code') : false; if(I('pay_code')){ switch (I('pay_code')){ case '余额支付': $condition['pay_name'] = I('pay_code'); break; case '积分兑换': $condition['pay_name'] = I('pay_code'); break; case 'alipay': $condition['pay_code'] = ['in',['alipay','alipayMobile']]; break; case 'weixin': $condition['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']]; break; case '其他方式': $condition['pay_name'] = ''; $condition['pay_code'] = ''; break; default: $condition['pay_code'] = I('pay_code'); break; } } I('shipping_status') != '' ? $condition['shipping_status'] = I('shipping_status') : false; I('user_id') ? $condition['user_id'] = trim(I('user_id')) : false; $sort_order = I('order_by','DESC').' '.I('sort'); $count = Db::name('order')->where($condition)->count(); $Page = new AjaxPage($count,20); $show = $Page->show(); $orderList = Db::name('order')->where($condition)->limit($Page->firstRow,$Page->listRows)->order($sort_order)->select(); $this->assign('orderList',$orderList); $this->assign('page',$show);// 赋值分页输出 $this->assign('pager',$Page); return $this->fetch(); } /** * 虚拟订单列表 * @return mixed */ public function virtual_list(){ return $this->fetch(); } public function ajaxVirtualList(){ $pay_status = I('pay_status'); $keyType = I("key_type"); $keywords = I('keywords','','trim'); $condition=['add_time'=>['between',"$this->begin,$this->end"],'prom_type'=>5]; $pay_status !='' ? $condition['pay_status'] = $pay_status : false; if(I('pay_code')){ switch (I('pay_code')){ case '余额支付': $condition['pay_name'] = I('pay_code'); break; case 'alipay': $condition['pay_code'] = ['in',['alipay','alipayMobile']]; break; case 'weixin': $condition['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']]; break; case '其他方式': $condition['pay_name'] = ''; $condition['pay_code'] = ''; break; default: $condition['pay_code'] = I('pay_code'); break; } } if(!empty($keywords)){ $keyType == 'mobile' ? $condition['mobile'] = $keywords : false; $keyType == 'order_sn' ? $condition['order_sn'] = $keywords: false; } // halt($condition); $count = Db::name('order')->where($condition)->count(); $Page = new AjaxPage($count,20); $orderList = Db::name('order')->where($condition)->limit($Page->firstRow,$Page->listRows)->order('order_id desc')->select(); $this->assign('orderList',$orderList); $this->assign('pager',$Page); $this->assign('total_count',$count); return $this->fetch(); } // 虚拟订单 public function virtual_info(){ // header("Content-type: text/html; charset=utf-8"); //exit("请联系TPshop官网客服购买高级版支持此功能"); //查询订单 $pay_status = I('pay_status'); $keyType = I("key_type"); $keywords = I('keywords','','trim'); $condition=['add_time'=>['between',"$this->begin,$this->end"],'prom_type'=>5]; $pay_status !='' ? $condition['pay_status'] = $pay_status : false; if(I('pay_code')){ switch (I('pay_code')){ case '余额支付': $condition['pay_name'] = I('pay_code'); break; case 'alipay': $condition['pay_code'] = ['in',['alipay','alipayMobile']]; break; case 'weixin': $condition['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']]; break; case '其他方式': $condition['pay_name'] = ''; $condition['pay_code'] = ''; break; default: $condition['pay_code'] = I('pay_code'); break; } } if(!empty($keywords)){ $keyType == 'mobile' ? $condition['mobile'] = $keywords : false; $keyType == 'order_sn' ? $condition['order_sn'] = $keywords: false; } $order = Db::name('order')->where($condition)->order('order_id desc')->find(); $this->assign('order',$order); // $this->assign('pager',$Page); // $this->assign('total_count',$count); //print_r($order);die(); return $this->fetch(); } public function virtual_cancel(){ $order_id = I('order_id/d'); if(IS_POST){ $admin_note = I('admin_note'); $order = M('order')->where(array('order_id'=>$order_id))->find(); if($order){ $r = M('order')->where(array('order_id'=>$order_id))->save(array('order_status'=>3,'admin_note'=>$admin_note)); if($r){ $commonOrder = new \app\common\logic\Order(); $commonOrder->setOrderById($order_id); $commonOrder->orderActionLog('取消订单',$admin_note,$this->admin_id); $this->ajaxReturn(array('status'=>1,'msg'=>'操作成功')); }else{ $this->ajaxReturn(array('status'=>-1,'msg'=>'操作失败')); } }else{ $this->ajaxReturn(array('status'=>-1,'msg'=>'订单不存在')); } } $order = M('order')->where(array('order_id'=>$order_id))->find(); $this->assign('order',$order); return $this->fetch(); } public function verify_code(){ if(IS_POST){ $vr_code = trim(I('vr_code')); if (!preg_match('/^[a-zA-Z0-9]{15,18}$/',$vr_code)) { $this->ajaxReturn(['status'=>0,'msg' => '兑换码格式错误,请重新输入']); } $vr_code_info = M('vr_order_code')->where(array('vr_code'=>$vr_code))->find(); $order = M('order')->where(['order_id'=>$vr_code_info['order_id']])->field('order_status,order_sn,user_note,user_id')->find(); if($order['order_status'] >2){ $this->ajaxReturn(['status'=>0,'msg' => '兑换码对应订单状态不符合要求']); } if(empty($vr_code_info)){ $this->ajaxReturn(['status'=>0,'msg' => '该兑换码不存在']); } if ($vr_code_info['vr_state'] == '1') { $this->ajaxReturn(['status'=>0,'msg' => '该兑换码已被使用']); } if ($vr_code_info['vr_indate'] < time()) { $this->ajaxReturn(['status'=>0,'msg'=>'该兑换码已过期,使用截止日期为: '.date('Y-m-d H:i:s',$vr_code_info['vr_indate'])]); } if ($vr_code_info['refund_lock'] > 0) {//退款锁定状态:0为正常,1为锁定(待审核),2为同意 $this->ajaxReturn(['status'=>0,'msg'=> '该兑换码已申请退款,不能使用']); } $update['vr_state'] = 1; $update['vr_usetime'] = time(); M('vr_order_code')->where(array('vr_code'=>$vr_code))->save($update); //检查订单是否完成 $condition = array(); $condition['vr_state'] = 0; $condition['refund_lock'] = array('in',array(0,1)); $condition['order_id'] = $vr_code_info['order_id']; $condition['vr_indate'] = array('gt',time()); $vr_order = M('vr_order_code')->where($condition)->select(); if(empty($vr_order)){ $data['order_status'] = 2; //此处不能直接为4,不然前台不能评论 $data['shipping_status'] = 1; //此处不能直接为4,不然前台不能评论 $data['confirm_time'] = time(); M('order')->where(['order_id'=>$vr_code_info['order_id']])->save($data); M('order_goods')->where(['order_id'=>$vr_code_info['order_id']])->save(['is_send'=>1]); //把订单状态改为已收货 } $order_goods = M('order_goods')->where(['order_id'=>$vr_code_info['order_id']])->find(); if($order_goods){ if(empty($vr_order)){ // 商品待评价提醒 $goods = M('goods')->where(["goods_id" => $order_goods['goods_id']])->field('original_img')->find(); $send_data = [ 'message_title' => '商品待评价', 'message_content' => $order_goods['goods_name'], 'img_uri' => $goods['original_img'], 'order_sn' => $order_goods['rec_id'], 'order_id' => $vr_code_info['order_id'], 'mmt_code' => 'evaluate_logistics', 'type' => 4, 'users' => [$order['user_id']], 'category' => 2, 'message_val' => [] ]; $messageFactory = new \app\common\logic\MessageFactory(); $messageLogic = $messageFactory->makeModule($send_data); $messageLogic->sendMessage(); } $result = [ 'vr_code'=>$vr_code, 'order_goods'=>$order_goods, 'order'=>$order, 'goods_image'=>goods_thum_images($order_goods['goods_id'],240,240), ]; $this->ajaxReturn(['status'=>1,'msg'=>'兑换成功','result'=>$result]); }else{ $this->ajaxReturn(['status'=>0,'msg'=>'虚拟订单商品不存在']); } } return $this->fetch(); } /** * 虚拟订单临时支付方法,以后要删除 */ public function generateVirtualCode(){ $order_id = I('order_id/d'); // 获取操作表 $order = M('order')->where(array('order_id'=>$order_id))->find(); //print_r($order);die(); update_pay_status($order['order_sn'], ['admin_id'=>session('admin_id'),'note'=>'订单付款成功']); $vr_order_code = Db::name('vr_order_code')->where('order_id',$order_id)->find(); if(!empty($vr_order_code)){ $this->success('成功生成兑换码', U('Order/virtual_info',['order_id'=>$order_id]), 1); }else{ $this->error('生成兑换码失败', U('Order/virtual_info',['order_id'=>$order_id]), 1); } } /** * ajax 发货订单列表 */ public function ajaxdelivery(){ $condition = array(); I('consignee') ? $condition['consignee'] = trim(I('consignee')) : false; I('order_sn') != '' ? $condition['order_sn'] = trim(I('order_sn')) : false; $shipping_status = I('shipping_status'); $condition['shipping_status'] = empty($shipping_status) ? array('neq',1) : $shipping_status; $condition['order_status'] = array('in','1,2,4'); $condition['prom_type'] = ['neq',5]; $count = M('order')->where($condition)->count(); $Page = new AjaxPage($count,10); //搜索条件下 分页赋值 foreach($condition as $key=>$val) { if(!is_array($val)){ $Page->parameter[$key] = urlencode($val); } } $show = $Page->show(); if($shipping_status) $orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->field("*,IF(shipping_name='','无需物流',shipping_name) as shipping_name")->order('add_time DESC')->select(); else $orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->order('add_time DESC')->select(); $this->assign('orderList',$orderList); $this->assign('page',$show);// 赋值分页输出 $this->assign('pager',$Page); return $this->fetch(); } public function refund_order_list(){ I('consignee') ? $condition['consignee'] = trim(I('consignee')) : false; I('order_sn') != '' ? $condition['order_sn'] = trim(I('order_sn')) : false; I('mobile') != '' ? $condition['mobile'] = trim(I('mobile')) : false; $prom_type = input('prom_type'); if($prom_type){ $condition['prom_type'] = $prom_type; } $condition['shipping_status'] = 0; $condition['order_status'] = 3; $condition['pay_status'] = array('gt',0); $count = M('order')->where($condition)->count(); $Page = new Page($count,10); $show = $Page->show(); $orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->order('add_time DESC')->select(); $this->assign('orderList',$orderList); $this->assign('page',$show);// 赋值分页输出 $this->assign('pager',$Page); return $this->fetch(); } public function refund_order_info($order_id){ $orderModel = new OrderModel(); $orderObj = $orderModel::get(['order_id'=>$order_id]); $order =$orderObj->append(['full_address','orderGoods'])->toArray(); $this->assign('order',$order); return $this->fetch(); } /** * 取消订单退款 * @throws \think\Exception */ public function refund_order(){ $data = I('post.'); $orderModel = new OrderModel(); $order = $orderModel::get(['order_id'=>$data['order_id']]); if(!$order){ $this->error('订单不存在或参数错误'); } if($data['pay_status'] == 3){ $messageFactory = new \app\common\logic\MessageFactory(); $messageLogic = $messageFactory->makeModule(['category' => 2]); $refundLogic = new RefundLogic(); if($data['refund_type'] == 1){ //取消订单退款退余额 if($refundLogic->updateRefundOrder($order,1)){ $messageLogic->sendRefundNotice($data['order_id'],$order['order_amount']); $this->success('成功退款到账户余额'); }else{ $this->error('退款失败'); } } if($data['refund_type']== 0){ //取消订单支付原路退回 $pay_code_arr = ['weixin'/*PC+公众号微信支付*/ , 'alipay'/*APP,PC支付宝支付*/ , 'alipayMobile'/*手机支付宝支付*/ , 'miniAppPay'/*小程序微信支付*/ , 'appWeixinPay'/*APP微信支付*/]; if(in_array($order['pay_code'] , $pay_code_arr)){ header("Content-type: text/html; charset=utf-8"); exit("请联系TPshop官网客服购买高级版支持此功能"); }else{ $this->error('该订单支付方式不支持在线退回'); } } }else{ M('order')->where(array('order_id'=>$order['order_id']))->save($data); $this->success('拒绝退款操作成功'); } } /** * 订单详情 * @return mixed */ public function detail(){ $order_id = input('order_id', 0); $orderModel = new OrderModel(); $order = $orderModel::get(['order_id'=>$order_id]); if(empty($order)){ $this->error('订单不存在或已被删除'); } $this->assign('order', $order); return $this->fetch(); } /** * 获取订单操作记录 */ public function getOrderAction(){ $order_id = input('order_id/d',0); $order_id <= 0 && $this->ajaxReturn(['status'=>1,'msg'=>'参数错误!!']); $orderModel = new OrderModel(); $orderObj = $orderModel::get(['order_id'=>$order_id]); $order = $orderObj->toArray(); // 获取操作记录 $action_log = Db::name('order_action')->where(['order_id'=>$order_id])->order('log_time desc')->select(); $admins = M("admin")->getField("admin_id , user_name", true); $user = M("users")->field('user_id,nickname')->where(['user_id'=>$order['user_id']])->find(); //查找用户昵称 foreach ($action_log as $k => $v){ if ($v['action_user'] == 0){ $action_log["$k"]['action_user_name'] = '用户:'.$user['nickname']; }else{ $action_log["$k"]['action_user_name'] = '管理员:'.$admins[$v['action_user']]; } $action_log["$k"]["log_time"] = date('Y-m-d H:i:s',$v['log_time']); $action_log["$k"]["order_status"] = $this->order_status[$v['order_status']]; $action_log["$k"]["pay_status"] = $this->pay_status[$v['pay_status']]; $action_log["$k"]["shipping_status"] = $this->shipping_status[$v['shipping_status']]; } $this->ajaxReturn(['status'=>1,'msg'=>'参数错误!!','data'=>$action_log]); } /** * 拆分订单 */ public function split_order(){ $order_id = I('order_id'); $orderModel = new OrderModel(); $orderObj = $orderModel::get(['order_id'=>$order_id]); $order =$orderObj->append(['full_address','orderGoods'])->toArray(); if($order['pay_status'] == 0){ $this->error('未支付订单不允许拆分'); exit; } if($order['shipping_status'] != 0){ $this->error('已发货订单不允许编辑'); exit; } $orderGoods = $order['orderGoods']; if($orderGoods){ $orderGoods = collection($orderGoods)->toArray(); } if(IS_POST){ //################################先处理原单剩余商品和原订单信息 $old_goods = I('old_goods/a'); foreach ($orderGoods as $val){ $all_goods[$val['rec_id']] = $val;//所有商品信息 } //################################新单处理 for($i=1;$i<20;$i++){ $temp = $this->request->param($i.'_old_goods/a'); if(!empty($temp)){ $split_goods[] = $temp; } } foreach ($split_goods as $key=>$vrr){ foreach ($vrr as $k=>$v){ $all_goods[$k]['goods_num'] = $v; $brr[$key][] = $all_goods[$k]; } } $user_money = $order['user_money'] / $order['total_amount']; $integral = $order['integral'] / $order['total_amount']; $order_amount = $order['order_amount'] / $order['total_amount']; $split_user_money = 0;// 累计 $split_integral = 0; $split_order_amount = 0; foreach($brr as $k=>$goods){ $newPay = new Pay(); try{ $newPay->setUserId($order['user_id']); $newPay->payGoodsList($goods); $newPay->delivery($order['district']); $newPay->orderPromotion(); } catch (TpshopException $t) { $error = $t->getErrorArr(); $this->error($error['msg']); } $new_order = $order; $new_order['order_sn'] = date('YmdHis').mt_rand(1000,9999); $new_order['parent_sn'] = $order['order_sn']; //修改订单费用 $new_order['goods_price'] = $newPay->getGoodsPrice(); // 商品总价 $new_order['total_amount'] = $newPay->getTotalAmount(); // 订单总价 // if($order['pay_name'] == '余额支付'){ //修改拆分订单余额展示 // $new_order['user_money'] = $newPay->getTotalAmount(); $new_order['user_money'] = floor(($user_money * $newPay->getTotalAmount())*100)/100;//向下取整保留2位小数点 // }else{ // $new_order['order_amount'] = $newPay->getOrderAmount(); // 应付金额 $new_order['order_amount'] = floor(($order_amount * $newPay->getTotalAmount())*100)/100;//向下取整保留2位小数点 // } $new_order['integral'] = floor(($integral * $newPay->getTotalAmount())*100)/100;//向下取整保留2位小数点 //前面按订单总比例拆分,剩余全部给最后一个订单 if($k == count($brr)-1){ $new_order['user_money'] = $order['user_money']-$split_user_money; $new_order['integral'] = $order['integral']-$split_integral; $new_order['order_amount'] = $order['order_amount']-$split_order_amount; }else{ $split_user_money += $new_order['user_money']; $split_integral += $new_order['integral']; $split_order_amount += $new_order['order_amount']; } if($order['integral'] > 0 ){ $new_order['integral_money'] = $new_order['integral']/($order['integral']/$order['integral_money']); } $new_order['add_time'] = time(); unset($new_order['order_id']); $new_order_id = DB::name('order')->insertGetId($new_order);//插入订单表 foreach ($goods as $vv){ $vv['order_id'] = $new_order_id; unset($vv['rec_id']); $nid = M('order_goods')->add($vv);//插入订单商品表 } } //拆分订单后删除原父订单信息 $orderObj->delete(); DB::name('order_goods')->where(['order_id'=>$order_id])->delete(); //################################新单处理结束 $this->success('操作成功',U('Admin/Order/index')); exit; } foreach ($orderGoods as $val){ $brr[$val['rec_id']] = array('goods_num'=>$val['goods_num'],'goods_name'=>getSubstr($val['goods_name'], 0, 35).$val['spec_key_name']); } $this->assign('order',$order); $this->assign('goods_num_arr',json_encode($brr)); $this->assign('orderGoods',$orderGoods); return $this->fetch(); } /** * 价钱修改 */ public function editprice($order_id){ $orderModel = new OrderModel(); $orderObj = $orderModel::get(['order_id'=>$order_id]); $order = $orderObj->toArray(); $this->editable($order); if(IS_POST){ $admin_id = session('admin_id'); if(empty($admin_id)){ $this->error('非法操作'); exit; } $update['discount'] = I('post.discount'); $update['shipping_price'] = I('post.shipping_price'); if($update['shipping_price'] < 0){ $this->error('运费不能小于0'); exit; } //total_amount-->goods_price $update['order_amount'] = $order['goods_price']+$update['shipping_price']-$update['discount']-$order['user_money']-$order['integral_money']-$order['coupon_price']-$order['order_prom_amount']; $row = M('order')->where(array('order_id'=>$order_id))->save($update); if(!$row){ $this->success('没有更新数据',U('Admin/Order/editprice',array('order_id'=>$order_id))); }else{ $this->success('操作成功',U('Admin/Order/detail',array('order_id'=>$order_id))); } exit; } $this->assign('order',$order); return $this->fetch(); } /** * 订单删除 * @param int $id 订单id */ public function delete_order(){ $order_id = I('post.order_id/d',0); $order = new \app\common\logic\Order($order_id); $order->setOrderById($order_id); try{ $order->adminDelOrder(); $this->ajaxReturn(['status' => 1, 'msg' => '删除成功']); }catch (TpshopException $t){ $error = $t->getErrorArr(); $this->ajaxReturn($error); } } /** * 订单取消付款 * @param $order_id * @return mixed */ public function pay_cancel($order_id){ if(I('remark')){ $data = I('post.'); $note = array('退款到用户余额','已通过其他方式退款','不处理,误操作项'); if($data['refundType'] == 0 && $data['amount']>0){ accountLog($data['user_id'], $data['amount'], 0, '退款到用户余额'); // 退款消息 $messageFactory = new MessageFactory(); $messageLogic = $messageFactory->makeModule(['category' => 2]); $messageLogic->sendRefundNotice($data['order_id'],$data['amount']); } $orderLogic = new OrderLogic(); $orderLogic->orderProcessHandle($data['order_id'],'pay_cancel'); $commonOrder = new \app\common\logic\Order(); $commonOrder->setOrderById($data['order_id']); $d = $commonOrder->orderActionLog($data['remark'].':'.$note[$data['refundType']],'支付取消',$this->admin_id); if($d){ exit(""); }else{ exit(""); } }else{ $order = M('order')->where("order_id=$order_id")->find(); $this->assign('order',$order); return $this->fetch(); } } /** * 订单打印 * @param string $id * @return mixed */ public function order_print($id=''){ if($id){ $order_id = $id; }else{ $order_id = I('order_id'); } $orderModel = new OrderModel(); $orderObj = $orderModel::get(['order_id'=>$order_id]); $order =$orderObj->append(['full_address','orderGoods','delivery_method'])->toArray(); // halt($order['orderGoods']); $order['province'] = getRegionName($order['province']); $order['city'] = getRegionName($order['city']); $order['district'] = getRegionName($order['district']); $order['full_address'] = $order['province'].' '.$order['city'].' '.$order['district'].' '. $order['address']; if($id){ return $order; }else{ $shop = tpCache('shop_info'); $area_list = Db::name('region')->where('id', 'IN', [$shop['province'], $shop['city'], $shop['district']])->order('level asc')->select(); $shop['address'] =$area_list[0]['name'].' '.$area_list[1]['name'].' '.$area_list[2]['name'].' '.$shop['address']; $this->assign('order',$order); $this->assign('shop',$shop); $template = I('template','picking'); return $this->fetch($template); } } /** *批量打印发货单 */ public function delivery_print(){ $ids =input('print_ids'); $order_ids=trim($ids,','); $orderModel= new OrderModel(); $orderObj = $orderModel->whereIn('order_id',$order_ids)->select(); if ($orderObj){ $order = collection($orderObj)->append(['orderGoods','full_address'])->toArray(); } $shop = tpCache('shop_info'); $this->assign('order',$order); $this->assign('shop',$shop); $template = I('template','print'); return $this->fetch($template); } /** * 快递单打印 */ public function shipping_print($id=''){ if($id){ $order_id = $id; }else{ $order_id = I('get.order_id'); } $orderModel = new OrderModel(); $orderObj = $orderModel::get(['order_id'=>$order_id]); $order =$orderObj->append(['full_address'])->toArray(); //查询是否存在订单及物流 $shipping = Db::name('shipping')->where('shipping_code',$order['shipping_code'])->find(); if(!$shipping){ $this->error('快递公司不存在'); } if(empty($shipping['template_html'])){ $this->error('请设置'.$shipping['shipping_name'].'打印模板'); } $shop = tpCache('shop_info');//获取网站信息 $shop['province'] = empty($shop['province']) ? '' : getRegionName($shop['province']); $shop['city'] = empty($shop['city']) ? '' : getRegionName($shop['city']); $shop['district'] = empty($shop['district']) ? '' : getRegionName($shop['district']); $order['province'] = getRegionName($order['province']); $order['city'] = getRegionName($order['city']); $order['district'] = getRegionName($order['district']); $template_var = array("发货点-名称", "发货点-联系人", "发货点-电话", "发货点-省份", "发货点-城市", "发货点-区县", "发货点-手机", "发货点-详细地址", "收件人-姓名", "收件人-手机", "收件人-电话", "收件人-省份", "收件人-城市", "收件人-区县", "收件人-邮编", "收件人-详细地址", "时间-年", "时间-月", "时间-日","时间-当前日期","订单-订单号", "订单-备注","订单-配送费用"); $content_var = array($shop['store_name'],$shop['contact'],$shop['phone'],$shop['province'],$shop['city'], $shop['district'],$shop['phone'],$shop['address'],$order['consignee'],$order['mobile'],$order['phone'], $order['province'],$order['city'],$order['district'],$order['zipcode'],$order['address'],date('Y'),date('M'), date('d'),date('Y-m-d'),$order['order_sn'],$order['admin_note'],$order['shipping_price'], ); $shipping['template_html_replace'] = str_replace($template_var, $content_var, $shipping['template_html']); if($id){ return $shipping; }else{ $shippings[0]=$shipping; $this->assign('shipping',$shippings); return $this->fetch("print_express"); } } /** *批量打印快递单 */ public function shipping_print_batch(){ $ids=I('post.ids3'); $ids=substr($ids,0,-1); $ids=explode(',', $ids); if(!is_numeric($ids[0])){ unset($ids[0]); } $shippings=array(); foreach ($ids as $k => $v) { $shippings[$k]=$this->shipping_print($v); } $this->assign('shipping',$shippings); return $this->fetch("print_express"); } /** * 生成发货单 */ public function deliveryHandle(){ $orderLogic = new OrderLogic(); $data = I('post.'); $res = $orderLogic->deliveryHandle($data); if($res['status'] == 1){ if($data['send_type'] == 2 && !empty($res['printhtml'])){ $this->assign('printhtml',$res['printhtml']); return $this->fetch('print_online'); } $this->success('操作成功',U('Admin/Order/delivery_info',array('order_id'=>$data['order_id']))); }else{ $this->error($res['msg'],U('Admin/Order/delivery_info',array('order_id'=>$data['order_id']))); } } public function delivery_info($id=''){ if($id){ $order_id=$id; }else{ $order_id = I('order_id'); } $orderGoodsMdel = new OrderGoods(); $orderModel = new OrderModel(); $orderObj = $orderModel->where(['order_id'=>$order_id])->find(); $order =$orderObj->append(['full_address'])->toArray(); $orderGoods = $orderGoodsMdel::all(['order_id'=>$order_id,'is_send'=>['lt',2]]); if($id){ if(!$orderGoods){ $this->error('所选订单有商品已完成退货或换货');//已经完成售后的不能再发货 } }else{ if(!$orderGoods){ $this->error('此订单商品已完成退货或换货');//已经完成售后的不能再发货 } } if($id){ $order['orderGoods']=$orderGoods; $order['goods_num']=count($orderGoods); return $order; }else{ $delivery_record = M('delivery_doc')->alias('d')->join('__ADMIN__ a','a.admin_id = d.admin_id')->where('d.order_id='.$order_id)->select(); if($delivery_record){ $order['invoice_no'] = $delivery_record[count($delivery_record)-1]['invoice_no']; } $this->assign('order',$order); $this->assign('orderGoods',$orderGoods); $this->assign('delivery_record',$delivery_record);//发货记录 $shipping_list = Db::name('shipping')->field('shipping_name,shipping_code')->where('')->select(); $this->assign('shipping_list',$shipping_list); $express_switch = tpCache('express.express_switch'); $this->assign('express_switch',$express_switch); return $this->fetch(); } } /** * 发货单列表 */ public function delivery_list(){ return $this->fetch(); } /** *批量发货 */ public function delivery_batch(){ header("Content-type: text/html; charset=utf-8"); exit("请联系TPshop官网客服购买高级版支持此功能"); } /** *批量发货处理 */ public function delivery_batch_handle(){ header("Content-type: text/html; charset=utf-8"); exit("请联系TPshop官网客服购买高级版支持此功能"); } /** * 删除某个退换货申请 */ public function return_del(){ $id = I('get.id'); M('return_goods')->where("id = $id")->delete(); $this->success('成功删除!'); } /** * 退换货操作 */ public function return_info() { $return_id = I('id'); $return_goods = M('return_goods')->where(['id'=> $return_id])->find(); !$return_goods && $this->error('非法操作!'); $user = M('users')->where(['user_id' => $return_goods['user_id']])->find(); $order = M('order')->where(array('order_id'=>$return_goods['order_id']))->find(); $order['goods'] = M('order_goods')->where(['rec_id' => $return_goods['rec_id']])->find(); $return_goods['delivery'] = unserialize($return_goods['delivery']); //订单的物流信息,服务类型为换货会显示 $return_goods['seller_delivery'] = unserialize($return_goods['seller_delivery']); //订单的物流信息,服务类型为换货会显示 if($return_goods['imgs']) $return_goods['imgs'] = explode(',', $return_goods['imgs']); $this->assign('id',$return_id); // 用户 $this->assign('user',$user); // 用户 $this->assign('return_goods',$return_goods);// 退换货 $this->assign('order',$order);//退货订单信息 $this->assign('return_type',C('RETURN_TYPE'));//退货订单信息 $this->assign('refund_status',C('REFUND_STATUS')); return $this->fetch(); } /** *修改退货状态 */ public function checkReturniInfo() { $orderLogic = new OrderLogic(); $post_data = I('post.'); $return_goods = Db::name('return_goods')->where(['id'=>$post_data['id']])->find(); !$return_goods && $this->ajaxReturn(['status'=>-1,'msg'=>'非法操作!']); $type_msg = C('RETURN_TYPE'); $status_msg = C('REFUND_STATUS'); switch ($post_data['status']){ case -1 :$post_data['checktime'] = time();break; case 1 :$post_data['checktime'] = time();break; case 3 :$post_data['receivetime'] = time();break; //卖家收货时间 default; } if($return_goods['type'] > 0 && $post_data['status'] == 4){ $post_data['seller_delivery']['express_time'] = date('Y-m-d H:i:s'); $post_data['seller_delivery'] = serialize($post_data['seller_delivery']); //换货的物流信息 Db::name('order_goods')->where(['rec_id'=>$return_goods['rec_id']])->save(['is_send'=>2]); } $note ="退换货:{$type_msg[$return_goods['type']]}, 状态:{$status_msg[$post_data['status']]},处理备注:{$post_data['remark']}"; $result = M('return_goods')->where(['id'=>$post_data['id']])->save($post_data); if($result && $post_data['status']==1 && $return_goods['type']!=2) { //审核通过才更改订单商品状态,进行退货,退款时要改对应商品修改库存 $order = OrderModel::get($return_goods['order_id']); $commonOrderLogic = new OrderLogic(); $commonOrderLogic->alterReturnGoodsInventory($order,$return_goods['rec_id']); //审核通过,恢复原来库存 if($return_goods['type'] < 2){ $orderLogic->disposereRurnOrderCoupon($return_goods); // 是退货可能要处理优惠券 // 退款提醒 改在 refund_balance或refund_back方法进行提醒 //$messageFactory = new \app\common\logic\MessageFactory(); //$messageLogic = $messageFactory->makeModule(['category' => 2]); // 发退款消息 //$messageLogic->sendRefundNotice($return_goods['order_id'], $return_goods['refund_money'] + $return_goods['refund_deposit']); } } $commonOrder = new \app\common\logic\Order(); $commonOrder->setOrderById($return_goods['order_id']); $commonOrder->orderActionLog($note,'退换货',$this->admin_id); $this->ajaxReturn(['status'=>1,'msg'=>'修改成功','url'=>'']); } //售后退款原路退回 public function refund_back(){ $return_id = I('id'); $refund_deposit = I('refund_deposit/d',0); $refund_money = I('refund_money/d',0); $refund_integral = I('refund_integral/d',0); $refundLogic = new RefundLogic(); $refundLogic->setRefundDeposit($refund_deposit); $refundLogic->setRrefundMoney($refund_money); $refundLogic->setRrefundIntegral($refund_integral); $return_goods = M('return_goods')->where("id= $return_id")->find(); $rec_goods = M('order_goods')->where(array('order_id'=>$return_goods['order_id'],'goods_id'=>$return_goods['goods_id']))->find(); $order = M('order')->where(array('order_id'=>$rec_goods['order_id']))->find(); if($order['pay_code'] == 'weixin' || $order['pay_code'] == 'miniAppPay' || $order['pay_code'] == 'appWeixinPay' || $order['pay_code'] == 'alipay' || $order['pay_code'] == 'alipayMobile'){ // 退款提醒 $messageFactory = new \app\common\logic\MessageFactory(); $messageLogic = $messageFactory->makeModule(['category' => 2]); $orderLogic = new OrderLogic(); $return_goods['refund_money'] = $orderLogic->getRefundGoodsMoney($return_goods); if($order['pay_code'] == 'weixin' || $order['pay_code'] == 'miniAppPay' || $order['pay_code'] == 'appWeixinPay'){ include_once PLUGIN_PATH."payment/weixin/weixin.class.php"; $payment_obj = new \weixin($order['pay_code']); $data = array('transaction_id'=>$order['transaction_id'],'total_fee'=>$order['order_amount'],'refund_fee'=>$return_goods['refund_money']); $result = $payment_obj->payment_refund($data); if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){ $refundLogic->updateRefundGoods($return_goods['rec_id']);//订单商品售后退款 $this->ajaxReturn(['status'=>1,'msg'=>'退款成功','url'=>U("Admin/Order/return_list")]); // 发退款消息 $messageLogic->sendRefundNotice($return_goods['order_id'], $return_goods['refund_money']); }else{ $this->ajaxReturn(['status'=>-1,'msg'=>'退款失败'.$result['return_msg']]); } }else{ include_once PLUGIN_PATH."payment/alipay/alipay.class.php"; $payment_obj = new \alipay(); $detail_data = $order['transaction_id'].'^'.$return_goods['refund_money'].'^'.'用户申请订单退款'; $data = array('batch_no'=>date('YmdHi').$rec_goods['rec_id'],'batch_num'=>1,'detail_data'=>$detail_data); $payment_obj->payment_refund($data); // 发退款消息 $messageLogic->sendRefundNotice($return_goods['order_id'], $return_goods['refund_money']); } }else{ $this->ajaxReturn(['status'=>-1,'msg'=>'该订单支付方式不支持在线退回']); } } /** * 退款到用户余额,余额+积分支付 * 有用三方金额支付的不走这个方法 */ public function refund_balance(){ $rec_id = I('rec_id'); $refund_deposit = I('refund_deposit/f',0); $refund_money = I('refund_money/f',0); $refund_integral = I('refund_integral/f',0); $return_goods = M('return_goods')->where(array('rec_id'=>$rec_id))->find(); if(empty($return_goods)) $this->ajaxReturn(['status'=>0,'msg'=>"参数有误"]); $refundLogic = new RefundLogic(); $refundLogic->setRefundDeposit($refund_deposit); $refundLogic->setRrefundMoney($refund_money); $refundLogic->setRrefundIntegral($refund_integral); $refundLogic->updateRefundGoods($rec_id,1);//售后商品退款 $messageFactory = new \app\common\logic\MessageFactory(); $messageLogic = $messageFactory->makeModule(['category' => 2]); $messageLogic->sendRefundNotice($return_goods['order_id'], $refund_deposit + $refund_money); $this->ajaxReturn(['status'=>1,'msg'=>"操作成功",'url'=>U("Admin/Order/return_list")]); } /** * 管理员生成申请退货单 */ public function add_return_goods() { $order_id = I('order_id'); $goods_id = I('goods_id'); $return_goods = M('return_goods')->where("order_id = $order_id and goods_id = $goods_id")->find(); if(!empty($return_goods)) { $this->error('已经提交过退货申请!',U('Admin/Order/return_list')); exit; } $order = M('order')->where("order_id = $order_id")->find(); $data['order_id'] = $order_id; $data['order_sn'] = $order['order_sn']; $data['goods_id'] = $goods_id; $data['addtime'] = time(); $data['user_id'] = $order[user_id]; $data['remark'] = '管理员申请退换货'; // 问题描述 M('return_goods')->add($data); $this->success('申请成功,现在去处理退货',U('Admin/Order/return_list')); exit; } /** * 订单操作 * @param $id */ public function order_action(){ $orderLogic = new OrderLogic(); $action = I('get.type'); $order_id = I('get.order_id'); if($action && $order_id){ if($action !=='pay'){ $convert_action= C('CONVERT_ACTION')["$action"]; $commonOrder = new \app\common\logic\Order(); $commonOrder->setOrderById($order_id); $res = $commonOrder->orderActionLog(I('note'),$convert_action,$this->admin_id); } $a = $orderLogic->orderProcessHandle($order_id,$action,array('note'=>I('note'),'admin_id'=>0)); if($res !== false && $a !== false){ if ($action == 'remove') { $this->ajaxReturn(['status' => 1, 'msg' => '操作成功', 'url' => U('Order/index')]); } $this->ajaxReturn(['status' => 1,'msg' => '操作成功','url' => U('Order/detail',array('order_id'=>$order_id))]); }else{ if ($action == 'remove') { $this->ajaxReturn(['status' => 0, 'msg' => '操作失败', 'url' => U('Order/index')]); } $this->ajaxReturn(['status' => 0,'msg' => '操作失败','url' => U('Order/index')]); } }else{ $this->ajaxReturn(['status' => 0,'msg' => '参数错误','url' => U('Order/index')]); } } public function order_log(){ $order_sn = I('order_sn'); $condition = array(); $begin = $this->begin; $end = $this->end; $condition['log_time'] = array('between',"$begin,$end"); if($order_sn){ //搜索订单号 $order_id_arr = Db::name('order')->where(['order_sn' => $order_sn])->getField('order_id',true); $order_ids =implode(',',$order_id_arr); $condition['order_id']=['in',$order_ids]; $this->assign('order_sn',$order_sn); } $admin_id = I('admin_id'); if($admin_id >0 ){ $condition['action_user'] = $admin_id; } $count = M('order_action')->where($condition)->count(); $Page = new Page($count,20); foreach($condition as $key=>$val) { $Page->parameter[$key] = urlencode($begin.'_'.$end); } $show = $Page->show(); $list = M('order_action')->where($condition)->order('action_id desc')->limit($Page->firstRow.','.$Page->listRows)->select(); //绑定订单类型是否虚拟,方便跳转对应订单详情 $order_id_array = array_unique(array_column($list,'order_id')); $order_type_list = db('order')->where('order_id','in',$order_id_array)->field('order_id,prom_type')->select(); $new_arr = []; foreach ($order_type_list as $k => $v){ $new_arr[$order_type_list[$k]['order_id']] = $v['prom_type']; } $orderIds = []; foreach ($list as $k => $log) { $list[$k]['prom_type'] = $new_arr[$log['order_id']]; if (!$log['action_user']) { $orderIds[] = $log['order_id']; } } if ($orderIds) { $users = M("users")->alias('u')->join('__ORDER__ o', 'o.user_id = u.user_id')->getField('o.order_id,u.nickname'); } $this->assign('users',$users); $this->assign('list',$list); $this->assign('pager',$Page); $this->assign('page',$show); $admin = M('admin')->getField('admin_id,user_name'); $this->assign('admin',$admin); return $this->fetch(); } /** * 检测订单是否可以编辑 * @param $order */ private function editable($order){ if($order['shipping_status'] != 0){ $this->error('已发货订单不允许编辑'); exit; } return; } /** * 导出订单 */ public function export_order() { //搜索条件 $order_status = I('order_status',''); $order_ids = I('order_ids'); $prom_type = I('prom_type'); //订单类型 $keyType = I("key_type"); //查找类型 $keywords = I('keywords','','trim'); $where= ['add_time'=>['between',"$this->begin,$this->end"]]; if(!empty($keywords)){ $keyType == 'mobile' ? $where['mobile'] = $keywords : false; $keyType == 'order_sn' ? $where['order_sn'] = $keywords: false; $keyType == 'consignee' ? $where['consignee'] = $keywords: false; } $prom_type != '' ? $where['prom_type'] = $prom_type : $where['prom_type'] = ['lt',5]; if($order_status>-1 && $order_status != ''){ $where['order_status'] = $order_status; } if($order_ids){ $where['order_id'] = ['in', $order_ids]; } if(I('pay_code')){ switch (I('pay_code')){ case '余额支付': $where['pay_name'] = I('pay_code'); break; case '积分兑换': $where['pay_name'] = I('pay_code'); break; case 'alipay': $where['pay_code'] = ['in',['alipay','alipayMobile']]; break; case 'weixin': $where['pay_code'] = ['in',['weixin','weixinH5','miniAppPay']]; break; case '其他方式': $where['pay_name'] = ''; $where['pay_code'] = ''; break; default: $where['pay_code'] = I('pay_code'); break; } } $orderList = Db::name('order')->field("*,FROM_UNIXTIME(add_time,'%Y-%m-%d') as create_time")->where($where)->order('order_id')->select(); $strTable =''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if(is_array($orderList)){ $region = get_region_list(); foreach($orderList as $k=>$val){ $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $orderGoods = D('order_goods')->where('order_id='.$val['order_id'])->select(); $strGoods=""; $goods_num = 0; foreach($orderGoods as $goods){ $goods_num = $goods_num + $goods['goods_num']; $strGoods .= "商品编号:".$goods['goods_sn']." 商品名称:".$goods['goods_name']; if ($goods['spec_key_name'] != '') $strGoods .= " 规格:".$goods['spec_key_name']; $strGoods .= "
"; } unset($orderGoods); $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .='
订单编号日期收货人收货地址电话订单金额实际支付支付方式支付状态发货状态商品数量商品信息
 '.$val['order_sn'].''.$val['create_time'].' '.$val['consignee'].''."{$region[$val['province']]},{$region[$val['city']]},{$region[$val['district']]},{$region[$val['twon']]}{$val['address']}".' '.$val['mobile'].''.$val['goods_price'].''.$val['order_amount'].''.$val['pay_name'].''.$this->pay_status[$val['pay_status']].''.$this->shipping_status[$val['shipping_status']].''.$goods_num.' '.$strGoods.'
'; unset($orderList); downloadExcel($strTable,'order'); exit(); } /** * 退货单列表 */ public function return_list(){ return $this->fetch(); } /* * ajax 退货订单列表 */ public function ajax_return_list(){ // 搜索条件 $order_sn = trim(I('order_sn')); $order_by = I('order_by','') ? I('order_by') : 'id'; $sort_order = I('sort_order') ? I('sort_order') : 'desc'; $status = I('status'); $where = []; if($order_sn){ $where['order_sn'] =['like', '%'.$order_sn.'%']; } if($status != ''){ $where['status'] = $status; } $ReturnGoods = new ReturnGoods(); $count = $ReturnGoods->where($where)->count(); $Page = new AjaxPage($count,13); $show = $Page->show(); $list = $ReturnGoods->where($where)->order("$order_by $sort_order")->limit("{$Page->firstRow},{$Page->listRows}")->select(); $state = C('REFUND_STATUS'); $return_type = C('RETURN_TYPE'); $this->assign('state',$state); $this->assign('return_type',$return_type); $this->assign('list',$list); $this->assign('pager',$Page); $this->assign('page',$show);// 赋值分页输出 return $this->fetch(); } /** * 添加订单 */ public function add_order() { // 获取省份 $province = M('region')->where(array('parent_id'=>0,'level'=>1))->select(); $this->assign('province',$province); return $this->fetch(); } /** * 提交添加订单 */ public function addOrder(){ $user_id = I('user_id');// 用户id 可以为空 $admin_note = I('admin_note'); // 管理员备注 //收货信息 $user = Db::name('users')->where(['user_id'=>$user_id])->find(); $address['consignee'] = I('consignee');// 收货人 $address['province'] = I('province'); // 省份 $address['city'] = I('city'); // 城市 $address['district'] = I('district'); // 县 $address['address'] = I('address'); // 收货地址 $address['mobile'] = I('mobile'); // 手机 $address['zipcode'] = I('zipcode'); // 邮编 $address['email'] = $user['email']; // 邮编 $invoice_title = I('invoice_title');// 发票抬头 $taxpayer = I('taxpayer');// 纳税人识别号 if(!empty($taxpayer)){ $invoice_desc = "商品明细";// 发票内容 } $goods_id_arr = I("goods_id/a"); $orderLogic = new OrderLogic(); $order_goods = $orderLogic->get_spec_goods($goods_id_arr); $pay = new Pay(); try{ $pay->setUserId($user_id); $pay->payGoodsList($order_goods); $pay->delivery($address['district']); $pay->orderPromotion(); } catch (TpshopException $t) { $error = $t->getErrorArr(); $this->error($error['msg']); } $placeOrder = new PlaceOrder($pay); $placeOrder->setUserAddress($address); $placeOrder->setInvoiceTitle($invoice_title); $placeOrder->setTaxpayer($taxpayer); $placeOrder->setInvoiceDesc($invoice_desc); $placeOrder->addNormalOrder(); $order = $placeOrder->getOrder(); if($order) { M('order_action')->add([ 'order_id' => $order['order_id'], 'action_user' => session('admin_id'), 'order_status' => 0, //待支付 'shipping_status' => 0, //待确认 'action_note' => $admin_note, 'status_desc' => '提交订单', 'log_time' => time() ]); $this->success('添加订单成功',U("Admin/Order/detail",array('order_id'=>$order['order_id']))); } else{ $this->error('添加失败'); } } /** * 订单编辑 * @return mixed */ public function edit_order(){ $order_id = I('order_id'); $orderLogic = new OrderLogic(); $orderModel = new OrderModel(); $orderObj = $orderModel->where(['order_id'=>$order_id])->find(); $order =$orderObj->append(['full_address','orderGoods'])->toArray(); if($order['shipping_status'] != 0){ $this->error('已发货订单不允许编辑'); exit; } $orderGoods = $order['orderGoods']; if(IS_POST) { $order['consignee'] = I('consignee');// 收货人 $order['province'] = I('province'); // 省份 $order['city'] = I('city'); // 城市 $order['district'] = I('district'); // 县 $order['address'] = I('address'); // 收货地址 $order['mobile'] = I('mobile'); // 手机 $order['invoice_title'] = I('invoice_title');// 发票 $order['taxpayer'] = I('taxpayer');// 纳税人识别号 $order['admin_note'] = I('admin_note'); // 管理员备注 $order['admin_note'] = I('admin_note'); // $order['shipping_code'] = I('shipping');// 物流方式 $order['shipping_name'] = Db::name('shipping')->where('shipping_code',I('shipping'))->getField('shipping_name'); $order['pay_code'] = I('payment');// 支付方式 $order['pay_name'] = M('plugin')->where(array('status'=>1,'type'=>'payment','code'=>I('payment')))->getField('name'); $goods_id_arr = I("goods_id/a"); $new_goods = $old_goods_arr = array(); //################################订单添加商品 if($goods_id_arr){ $new_goods = $orderLogic->get_spec_goods($goods_id_arr); foreach($new_goods as $key => $val) { $val['order_id'] = $order_id; $val['final_price'] = $val['goods_price']; $rec_id = M('order_goods')->add($val);//订单添加商品 if(!$rec_id) $this->error('添加失败'); } } //################################订单修改删除商品 $old_goods = I('old_goods/a'); foreach ($orderGoods as $val){ if(empty($old_goods[$val['rec_id']])){ M('order_goods')->where("rec_id=".$val['rec_id'])->delete();//删除商品 }else{ //修改商品数量 if($old_goods[$val['rec_id']] != $val['goods_num']){ $val['goods_num'] = $old_goods[$val['rec_id']]; M('order_goods')->where("rec_id=".$val['rec_id'])->save(array('goods_num'=>$val['goods_num'])); } $old_goods_arr[] = $val; } } $goodsArr = array_merge($old_goods_arr,$new_goods); $pay = new Pay(); try{ $pay->setUserId($order['user_id']); $pay->payOrder($goodsArr); $pay->delivery($order['district']); $pay->orderPromotion(); } catch (TpshopException $t) { $error = $t->getErrorArr(); $this->error($error['msg']); } //################################修改订单费用 $order['goods_price'] = $pay->getGoodsPrice(); // 商品总价 $order['shipping_price'] = $pay->getShippingPrice();//物流费 $order['order_amount'] = $pay->getOrderAmount(); // 应付金额 $order['total_amount'] = $pay->getTotalAmount(); // 订单总价 $o = M('order')->where('order_id='.$order_id)->save($order); $commonOrder = new \app\common\logic\Order(); $commonOrder->setOrderById($order_id); $l = $commonOrder->orderActionLog('修改订单','修改订单',$this->admin_id);//操作日志 if($o && $l){ $this->success('修改成功',U('Admin/Order/editprice',array('order_id'=>$order_id))); }else{ $this->success('修改失败',U('Admin/Order/detail',array('order_id'=>$order_id))); } exit; } // 获取省份 $province = M('region')->where(array('parent_id'=>0,'level'=>1))->select(); //获取订单城市 $city = M('region')->where(array('parent_id'=>$order['province'],'level'=>2))->select(); //获取订单地区 $area = M('region')->where(array('parent_id'=>$order['city'],'level'=>3))->select(); //获取支付方式 $payment_where = ['status'=>1,'type'=>'payment']; if($order['shop_id'] > 0){ //预售订单和抢购不支持货到付款 $payment_where['code'] = array('neq','cod'); } $payment_list = M('plugin')->where($payment_where)->select(); //获取配送方式 $shipping_list = Db::name('shipping')->field('shipping_name,shipping_code')->where('')->select(); $this->assign('order',$order); $this->assign('province',$province); $this->assign('city',$city); $this->assign('area',$area); $this->assign('orderGoods',$orderGoods); $this->assign('shipping_list',$shipping_list); $this->assign('payment_list',$payment_list); return $this->fetch(); } /** * 选择搜索商品 */ public function search_goods() { $brandList = M("brand")->select(); $categoryList = M("goods_category")->select(); $this->assign('categoryList',$categoryList); $this->assign('brandList',$brandList); $where = 'exchange_integral = 0 and is_on_sale = 1 and is_virtual =' . I('is_virtual/d',0);//搜索条件 I('intro') && $where = "$where and ".I('intro')." = 1"; if(I('cat_id')){ $this->assign('cat_id',I('cat_id')); $grandson_ids = getCatGrandson(I('cat_id')); $where = " $where and cat_id in(". implode(',', $grandson_ids).") "; // 初始化搜索条件 } if(I('brand_id')){ $this->assign('brand_id',I('brand_id')); $where = "$where and brand_id = ".I('brand_id'); } if(!empty($_REQUEST['keywords'])) { $this->assign('keywords',I('keywords')); $where = "$where and (goods_name like '%".I('keywords')."%' or keywords like '%".I('keywords')."%')" ; } $goods_count =M('goods')->where($where)->count(); $Page = new Page($goods_count,C('PAGESIZE')); $goodsList = M('goods')->where($where)->order('goods_id DESC')->limit($Page->firstRow,$Page->listRows)->select(); foreach($goodsList as $key => $val) { $spec_goods = M('spec_goods_price')->where("goods_id = {$val['goods_id']}")->select(); $goodsList[$key]['spec_goods'] = $spec_goods; } if($goodsList){ //计算商品数量 foreach ($goodsList as $value){ if($value['spec_goods']){ $count += count($value['spec_goods']); }else{ $count++; } } $this->assign('totalSize',$count); } $this->assign('page',$Page->show()); $this->assign('goodsList',$goodsList); return $this->fetch(); } public function ajaxOrderNotice(){ $order_amount = M('order')->where("order_status=0 and (pay_status=1 or pay_code='cod')")->count(); echo $order_amount; } /** * 删除订单日志 */ public function delOrderLogo(){ $ids = I('ids'); empty($ids) && $this->ajaxReturn(['status' => -1,'msg' =>"非法操作!",'url' =>'']); $order_ids = rtrim($ids,","); $res = Db::name('order_action')->whereIn('order_id',$order_ids)->delete(); if($res !== false){ $this->ajaxReturn(['status' => 1,'msg' =>"删除成功!",'url' =>'']); }else{ $this->ajaxReturn(['status' => -1,'msg' =>"删除失败",'url' =>'']); } } /** * 导出发货单中包含的发货商品 */ public function exportDeliveryGoods() { $order_ids = I('ids4'); if(empty($order_ids)){ $this->error('没有选中订单', U('admin/order/delivery_list')); } $where['order_id'] = ['in', $order_ids]; $orderList = Db::name('order')->field('order_sn,order_id,total_amount')->where($where)->order('order_id')->select(); if(!$orderList){ $this->error('没找到相关订单信息', U('admin/order/delivery_list')); } $strTable =''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; foreach($orderList as $k=>$val){ $strTable .= ''; $strTable .= ''; $strTable .= ''; $orderGoods = D('order_goods')->where('order_id='.$val['order_id'])->select(); $strGoods=""; $goods_num = ''; $spec_key_name = ''; foreach($orderGoods as $goods){ $goods_num .= ' '.$goods['goods_num']; $goods_num .= "
"; $strGoods .= " 商品编号:".$goods['goods_sn']." 商品名称:".$goods['goods_name']; $strGoods .= "
"; $spec_key_name .= " ".($goods['spec_key_name'] ?: '无' ); $spec_key_name .= "
"; } unset($orderGoods); $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } $strTable .='
订单编号订单总价商品信息对应商品规格对应商品数量
 '.$val['order_sn'].' '.$val['total_amount'].''.$strGoods.' '.$spec_key_name.' '.$goods_num.'
'; unset($orderList); downloadExcel($strTable,'goods_list'); exit(); } }