order_status = C('ORDER_STATUS'); $this->pay_status = C('PAY_STATUS'); $this->shipping_status = C('SHIPPING_STATUS'); // $sql="SELECT a.*,b.shipping_code,b.shipping_name,b.shipping_logo FROM __PREFIX__store_shipping a "; // $sql.="left join __PREFIX__shipping b on a.shipping_id=b.shipping_id where a.store_id=1"; // $shipping_status = DB::query($sql); // 订单 支付 发货状态 $this->assign('order_status',$this->order_status); $this->assign('pay_status',$this->pay_status); $this->assign('shipping_status',$this->shipping_status); } /* *订单首页 */ public function index(){ $begin = date('Y/m/d',strtotime("-1 month"));//30天前 $end = date('Y/m/d',strtotime('+1 days')); $day = trim(I('day',"")); if ($day=="1") { $begin= date('Y/m/d'); $end = date('Y/m/d',strtotime('+1 days')); } // $this->assign('timegap',$begin.'-'.$end); $this->assign('timegap',''); $consignee = I('consignee'); $pay_status = I('pay_status'); $keytype = I('keytype'); $timetype = I('timetype'); $order_status = I('order_status'); $keywords = urldecode(urldecode(I('keywords'))); $getp=I('p'); //自动评价 $this->autopj(); // $shipping_status = I('shipping_status'); $exp_type = I('exp_type'); $picksle_type = I('picksle_type'); $picksle = I('picksle'); $add_time_begin= urldecode(urldecode(I('add_time_begin'))); $add_time_end= urldecode(urldecode(I('add_time_end'))); $goodstype = I("goodstype"); $goodskey = I('goodskey','','trim'); $oldurl=array( "consignee"=>$consignee, "pay_status"=>$pay_status, "keytype"=>$keytype, "timetype"=>$timetype, "keywords"=>$keywords, "goodstype"=>$goodstype, "goodskey"=>$goodskey, "shipping_status"=>$shipping_status, "exp_type"=>$exp_type, "order_status"=>$order_status, "picksle_type"=>$picksle_type, "picksle"=>$picksle, "add_time_begin"=>$add_time_begin, "add_time_end"=>$add_time_end, "p"=>$getp ); $this->assign('oldurl',$oldurl); return $this->fetch('',getAdmStoId()); } //自动评价 public function autopj() { $getstoid=getAdmStoId(); $is_autopj = 0; $tp_config = tpCache('shopping', $getstoid); $is_autopj = $tp_config['is_autopj']; //是否开启自动评价 if ($is_autopj==1) { $auto_pjday = $tp_config['auto_pjday']; $auto_pjremark = $tp_config['auto_pjremark']; $logic = new \app\home\logic\UsersLogic(); //几天前 $et=strtotime('-'.$auto_pjday.' day'); $sql = "select a.store_id,a.order_id,a.is_comment,a.goods_id,b.confirm_time,b.user_id,b.consignee,b.mobile from wxd_order_goods a left join wxd_order b on a.order_id=b.order_id where a.store_id=" . $getstoid . " and a.is_comment=0 and b.order_status=2 and b.shipping_status=1 and b.confirm_time>0 and b.confirm_time<" . $et." LIMIT 20"; $auto_order = DB::query($sql); foreach ($auto_order as $key => $value) { $add['goods_id'] = $value['goods_id']; if ($value['consignee']) { $add['username'] = $value['consignee']; } else { $add['username'] = $value['mobile']; } $add['content'] = $auto_pjremark; $add['deliver_rank'] = 5; $add['add_time'] = time(); $add['ip_address'] = getIP(); $add['is_show'] = 1; $add['user_id'] = $value['user_id']; $add['order_id'] = $value['order_id']; $add['goods_rank'] = 5; $add['service_rank'] = 5; $add['isauto'] = 1; $add['store_id'] = $getstoid; //添加评论 $row = $logic->add_comment($add); } } } /* *Ajax首页 */ public function ajaxindex(){ $orderLogic = new OrderLogic(); $timegap = I('timegap'); if($timegap){ $gap = explode('-', $timegap); $begin = strtotime($gap[0]); $end = strtotime($gap[1]); } if (I('add_time_begin') && I('add_time_end')) { //@new 新后台UI参数 $begin = strtotime(I('add_time_begin')); $end = strtotime(I('add_time_end')); } // 搜索条件 $condition = array(); $keyType = I("keytype"); $timetype = I("timetype"); $keywords = I('keywords','','trim'); $goodstype = I("goodstype"); $goodskey = I('goodskey','','trim'); $ispj = I('ispj'); $consignee = ($keyType && $keyType == 'consignee') ? $keywords : I('consignee','','trim'); $consignee ? $condition['a.consignee'] = trim($consignee) : false; if($begin && $end){ switch ($timetype) { case "1": $condition['a.add_time'] = array('between',"$begin,$end"); break; case "2": $condition['a.erp_givetime'] = array('between',"$begin,$end"); break; } } $stoid=getAdmStoId(); $condition['a.store_id']= $stoid; if ($keyType && $keywords) { switch ($keyType) { case "1": $condition['a.order_sn']=trim($keywords); break; case "2": $condition['c.mobile']=trim($keywords); break; } } // I('order_status') != '' ? $condition['order_status'] = I('order_status') : false; //订单状态 $order_status=I('order_status'); if($order_status=="") { I('pay_status') != '' ? $condition['a.pay_status'] = I('pay_status') : false; //是否支付 I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : false; //是否发货 upload_ylp_log('B06所有订单查询/搜索'); } else { switch ($order_status) { case 0: //待付款 $condition['a.order_status'] = 0; $condition['a.pay_status'] =0; I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 upload_ylp_log('B07待付款查询/搜索'); break; case 1: //待发货 $condition['a.pay_status'] =1; $condition['a.order_status'] = ['in','0,1']; $condition['a.shipping_status'] =0; I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 break; case 11: //待收货 $condition['a.order_status'] = 1; I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : $condition['shipping_status'] = ['in','1,2']; //是否发货 I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 upload_ylp_log('B08待收货查询/搜索'); break; case 2: //已收货 $condition['a.order_status'] = 2; I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 upload_ylp_log('B09已收货查询/搜索'); break; case 3: //已取消 $condition['a.order_status'] = I('order_status'); break; case 4: //已完成(包含待评价,已评价) if ($ispj) { $condition['a.order_status'] =$ispj; } else { $condition['a.order_status'] = array('in', '2,4'); } upload_ylp_log('B10已完成查询/搜索'); break; case 5: //已作废 $condition['a.order_status'] = I('order_status'); upload_ylp_log('B11已作废查询/搜索'); break; } } $pt_status=I('pt_status'); switch ($pt_status){ case 1://失败 $condition['a.pt_status'] =3; break; case 2://待成团 $condition['a.pt_status'] =1; break; case 3://已成团 $condition['a.pt_status'] =['in','2,4,5']; break; } /*--订单列表--*/ $picksle=trim(I('picksle')); $pstype=I('picksle_type'); $user_id=I('user_id/d'); $where="1=1"; if($picksle){ if($pstype) $where .= " AND b.pickup_name='".$picksle."'"; else $where .= " AND b.pickup_no='".$picksle."'"; } if($user_id){ $where .= " AND a.user_id=".$user_id; } //I('user_id/d') ? $condition['a.user_id'] = trim(I('user_id')) : false; $sort_order = I('order_by','order_id DESC').' '.I('sort'); //查询商品信息 if ($goodskey) { $sear_field="goods_sn"; switch ($goodstype) { case 1: $sear_field="goods_sn"; break; case 2: $sear_field="sku"; break; default: break; } $where.=" and EXISTS (SELECT * FROM wxd_order_goods b left join wxd_goods g on b.goods_id=g.goods_id WHERE b.order_id=a.order_id and g.".$sear_field."='".$goodskey."') "; } $count = M('order')->alias('a') ->join('(select pickup_id,pickup_name,pickup_no from wxd_pick_up where store_id='.$stoid.') b','a.pickup_id=b.pickup_id','left') ->join('(select user_id,mobile from wxd_users where store_id='.$stoid.') c','a.user_id=c.user_id','left') ->where($condition)->where($where)->count('a.order_id'); $Page = new AjaxPage($count,10); // 搜索条件下 分页赋值 foreach($condition as $key=>$val) { if($key == 'add_time'){ $between_time = explode(',',$val[1]); $parameter_add_time = date('Y/m/d',$between_time[0]) . '-' . date('Y/m/d',$between_time[1]); $Page->parameter['timegap'] = $parameter_add_time; } // else if($key == 'shipping_status' && $val==3) // { // $Page->parameter[$key] = "> 0"; // } else{ if(is_array($val)) { $val=''; } $Page->parameter[$key] = urlencode($val); } } //获取订单列表 //$orderList = $orderLogic->getOrderList($condition,$sort_order,$Page->firstRow,$Page->listRows); $show = $Page->show(); $start=$Page->firstRow; $page_size=$Page->listRows; $orderList= M('order')->alias('a') ->join('(select pickup_name,pickup_id,pickup_no from wxd_pick_up where store_id='.$stoid.') b','a.pickup_id=b.pickup_id','left') ->join('(select user_id,mobile from wxd_users where store_id='.$stoid.') c','a.user_id=c.user_id','left') ->where($condition)->where($where)->limit("$start,$page_size")->order($sort_order) ->field('a.order_id,a.order_sn,a.add_time,a.total_amount,a.pay_code,a.pay_status,a.erp_givetime,a.order_status,a.shipping_status,a.exp_type,a.user_note,a.consignee,a.province,a.city,a.district,a.shipping_name,a.address,a.shipping_price,a.is_zsorder,a.pt_status, a.pt_tail_money,b.pickup_name,b.pickup_no,c.mobile,c.user_id') ->select(); $order_id_arr = get_arr_column($orderList, 'order_id'); if (!empty($order_id_arr)) { $goods_arr = array(); foreach ($order_id_arr as $k=>$v) { $goods_list = M('order_goods')->alias('a') ->join('(select goods_id,original_img from wxd_goods where store_id='.$stoid.') b','a.goods_id=b.goods_id') ->where('a.order_id',$v) ->field('a.store_id,a.goods_id,a.goods_sn,a.goods_name,a.goods_price,a.prom_type,a.goods_num,a.is_distri,b.original_img')->select(); $goods_arr[$v]= $goods_list; unset($goods_list); } $this->assign('goodsArr', $goods_arr); } foreach ($orderList as $kk=>$vv){ $order_status_arr = C('ORDER_STATUS_DESC'); $order_status_code = orderStatusDesc(0, $vv); // 订单状态显示给用户看的 $orderList[$kk]['order_status_desc'] = $order_status_arr[$order_status_code]; //if($vv['order_status']!=3) { //if (empty($orderList[$kk]['order_status_desc']) || $orderList[$kk]['order_status_desc'] == '已取消') { switch ($vv['pt_status']) { case "1": $orderList[$kk]['order_status_desc'] = "待成团"; break; case "2": if ($vv['is_zsorder'] == 4) $orderList[$kk]['order_status_desc'] = "待付尾款"; //else //$orderList[$kk]['order_status_desc'] = "已成团"; break; case "3": $orderList[$kk]['order_status_desc'] = "拼团失败"; break; case "6": $orderList[$kk]['order_status_desc'] = "未付尾款"; break; } //} //} //物流 if ($orderList[$kk]['exp_type']=="0") { $orderLogic = new OrderLogic(); $orderList[$kk]['address2'] = $orderLogic->getAddressName($orderList[$kk]['province'], $orderList[$kk]['city'], $orderList[$kk]['district']); $orderList[$kk]['address2'] = $orderList[$kk]['address2'] . $orderList[$kk]['address']; }else { $orderList[$kk]['address2']=""; } } $this->assign('orderList',$orderList); $this->assign('page',$show);// 赋值分页输出 $this->assign('pager',$Page); $consignee = I('consignee'); $pay_status = I('pay_status'); $keytype = I('keytype'); $keywords = urldecode(urldecode(I('keywords'))); $getp=I('p'); $shipping_status = I('shipping_status'); $exp_type = I('exp_type'); $picksle_type = I('picksle_type'); $picksle = I('picksle'); $order_status=I('order_status'); $add_time_begin=I('add_time_begin'); $add_time_end=I('add_time_end'); $oldurl=U('Admin/Order/index',array( "consignee"=>$consignee, "pay_status"=>$pay_status, "keytype"=>$keytype, "timetype"=>timetype, "keywords"=>$keywords, "shipping_status"=>$shipping_status, "exp_type"=>$exp_type, "picksle_type"=>$picksle_type, "picksle"=>$picksle, "add_time_begin"=>$add_time_begin, "add_time_end"=>$add_time_end, "order_status"=>$order_status, "p"=>$getp )); $this->assign('order_status',$order_status); $this->assign('oldurl',urlencode($oldurl)); // upload_ylp_log('订单列表'); return $this->fetch('',getAdmStoId()); } //导出添加商品编号 public function exportreport() { $timegap = I('timegap'); if($timegap){ $gap = explode('-', $timegap); $begin = strtotime($gap[0]); $end = strtotime($gap[1]); } if (I('add_time_begin') && I('add_time_end')) { //@new 新后台UI参数 $begin = strtotime(I('add_time_begin')); $end = strtotime(I('add_time_end')); } // 搜索条件 $condition = array(); $keyType = I("keytype"); $timetype = I("timetype"); $keywords = I('keywords','','trim'); $goodstype = I("goodstype"); $goodskey = I('goodskey','','trim'); $ispj = I('ispj'); $consignee = ($keyType && $keyType == 'consignee') ? $keywords : I('consignee','','trim'); $consignee ? $condition['a.consignee'] = trim($consignee) : false; if($begin && $end){ switch ($timetype) { case "1": $condition['a.add_time'] = array('between',"$begin,$end"); break; case "2": $condition['a.erp_givetime'] = array('between',"$begin,$end"); break; } } $stoid=getAdmStoId(); $condition['a.store_id']= $stoid; if ($keyType && $keywords) { switch ($keyType) { case "1": $condition['a.order_sn']=trim($keywords); break; case "2": $condition['c.mobile']=trim($keywords); break; } } $order_status=I('order_status'); if($order_status=="") { I('pay_status') != '' ? $condition['a.pay_status'] = I('pay_status') : false; //是否支付 I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : false; //是否发货 } else { switch ($order_status) { case 0: //待付款 $condition['a.order_status'] = 0; $condition['a.pay_status'] =0; I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 break; case 1: //待发货 $condition['a.pay_status'] =1; $condition['a.order_status'] = ['in','0,1']; $condition['a.shipping_status'] =0; I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 break; case 11: //待收货 $condition['a.order_status'] = 1; I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : $condition['shipping_status'] = ['in','1,2']; //是否发货 I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 break; case 2: //已收货 $condition['a.order_status'] = 2; I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false; //配送方式 break; case 3: //已取消 $condition['a.order_status'] = I('order_status'); break; case 4: //已完成 if ($ispj) { $condition['a.order_status'] =$ispj; } else { $condition['a.order_status'] = array('in', '2,4'); } break; case 5: //已作废 $condition['a.order_status'] = I('order_status'); break; } } /*--订单列表--*/ $picksle=trim(I('picksle')); $pstype=I('picksle_type'); $where="1=1"; if($picksle){ if($pstype) $where .= " AND b.pickup_name='".$picksle."'"; else $where .= " AND b.pickup_no='".$picksle."'"; } //查询商品信息 if ($goodskey) { $sear_field="goods_sn"; switch ($goodstype) { case 1: $sear_field="goods_sn"; break; case 2: $sear_field="sku"; break; default: break; } $where.=" and EXISTS (SELECT * FROM wxd_order_goods b left join wxd_goods g on b.goods_id=g.goods_id WHERE b.order_id=a.order_id and g.".$sear_field."='".$goodskey."') "; } I('user_id') ? $condition['a.user_id'] = trim(I('user_id')) : false; $sort_order =" a.add_time desc"; $orderList= M('order')->alias('a') ->join('(select user_id,mobile from wxd_users where store_id='.$stoid.') c','a.user_id=c.user_id','left') ->join('(select pickup_name,pickup_id,pickup_no,pickup_address from wxd_pick_up where store_id='.$stoid.') b','a.pickup_id=b.pickup_id','left') ->where($condition) ->where($where) ->field("a.admin_note,a.is_zsorder,a.order_id,a.shipping_name,a.consignee,a.mobile,a.goods_price,a.shipping_price,b.pickup_address,b.pickup_no,b.pickup_name,a.exp_type,a.order_status,a.shipping_status,a.pay_status,a.pt_status,a.order_sn,FROM_UNIXTIME(a.add_time) as add_time,a.pay_time,FROM_UNIXTIME(a.pay_time) as pay_time1,a.erp_givetime,a.total_amount,IFNULL(CONCAT(IFNULL(a.more_address,''),a.address),'') as ADDRESS,a.expressno,a.user_note") ->order($sort_order)->select(); foreach ($orderList as $kk=>$vv){ $order_status_arr = C('ORDER_STATUS_DESC'); $order_status_code = orderStatusDesc(0, $vv); // 订单状态显示给用户看的 $orderList[$kk]['order_status_desc'] = $order_status_arr[$order_status_code]; } $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; // $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($orderList)) { foreach ($orderList as $k => $val) { switch ($val['pt_status']) { case "1": $val['order_status_desc'] = "待成团"; break; case "2": if ($val['is_zsorder'] == 4) $val['order_status_desc']= "待付尾款"; break; case "3": $val['order_status_desc']= "拼团失败"; break; case "6": $val['order_status_desc'] = "未付尾款"; break; } $res_goods = M('order_goods')->alias('a') ->join("goods b","a.goods_id=b.goods_id",'left') ->where(array('a.store_id' => getAdmStoId(), 'a.order_id' => $val['order_id'])) ->field("a.*,b.sku") ->select(); $getgoodsnum=count($res_goods); if ($getgoodsnum>1) { $getrowspan='rowspan="'.$getgoodsnum.'"'; } else { $getrowspan=""; } $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; // $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if ($res_goods) { foreach ($res_goods as $k1 => $val1) { if ($k1 > 0) { $strTable .= ''; } $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if ($k1 > 0) { $strTable .= ''; } } }else { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } } $strTable .= '
订单号下单时间付款时间POS调单时间收件人数量金额邮费总金额状态电话收货地址配送方式物流单号配送公司门店编号门店名称备注管理员备注商品详情
商品编号商品条码商品名称数量单价
 ' . $val['order_sn'] . ' ' . $val['add_time'] . '  ' .($val['pay_time']=="0"?'':$val['pay_time1']). ' ' .($val['erp_givetime']=="0"?'':date('Y-m-d H:i:s',$val['erp_givetime'])). ' ' . $val['consignee'] . ' ' . $val['goods_num'] . '' . $val['goods_price'] . '' . $val['shipping_price'] . '' . $val['total_amount'] . ' ' . $val['order_status_desc'] . ' ' . $val['mobile'] . ' ' . $val['ADDRESS'] . ' ' . ($val['exp_type'] == '0' ? '物流' :'自提') . ' ' . $val['expressno'] . ' ' . $val['shipping_name'] . ' ' . ($val['pickup_no']) . ' ' . ($val['pickup_name']) . ' ' . $val['user_note'] . ' ' . $val['admin_note'] . '
 ' . $val1['goods_sn'] . ' ' . ($val1['sku']) . ' ' . ($val1['goods_name']) . '' . ($val1['goods_num']) . '' . $val1['goods_price'] . '
    
'; echo $strTable; unset($goodsList); downloadExcel($strTable, 'order'); exit(); } /* * ajax 发货订单列表 */ public function ajaxdelivery(){ $orderLogic = new OrderLogic(); $condition = array(); $timegap = I('timegap'); if($timegap){ $gap = explode('-', $timegap); $begin = strtotime($gap[0]); $end = strtotime($gap[1]); }else{ //@new 新后台UI参数 $begin = strtotime(I('add_time_begin')); $end = strtotime(I('add_time_end')); } if($begin && $end){ $condition['a.add_time'] = array('between',"$begin,$end"); } I('consignee') ? $condition['a.consignee'] = trim(I('consignee')) : false; I('order_sn') != '' ? $condition['a.order_sn'] = trim(I('order_sn')) : false; $shipping_status = I('shipping_status/d'); $stoid=getAdmStoId(); $condition['a.store_id']= $stoid; $sort_order = 'a.'.I('order_by','DESC').' '.I('sort'); if ($shipping_status==0){ upload_ylp_log('B12待发货查询/搜索'); } if ($shipping_status==1){ upload_ylp_log('B13部分发货查询/搜索'); } if ($shipping_status==2){ upload_ylp_log('B14已发货查询/搜索'); } $condition['a.shipping_status'] = empty($shipping_status) ? array('neq',1) : $shipping_status; $condition['a.order_status'] = array('in','1,2,4'); $count = M('order')->alias("a")->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(); //$orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->order($sort_order)->select(); //获取订单列表 $orderList = $orderLogic->getOrderList($condition,$sort_order,$Page->firstRow,$Page->listRows); $order_id_arr = get_arr_column($orderList, 'order_id'); if (!empty($order_id_arr)) ; if ($order_id_arr) { $goods_list = M('order_goods')->alias('a') ->join('goods b',' a.goods_id=b.goods_id','left') ->where("a.order_id", "in", implode(',', $order_id_arr)) ->field('a.*,b.original_img') ->select(); $goods_arr = array(); foreach ($goods_list as $v) { $goods_arr[$v['order_id']][] = $v; } $this->assign('goodsArr', $goods_arr); } $this->assign('orderList',$orderList); $this->assign('page',$show);// 赋值分页输出 $this->assign('pager',$Page); // upload_ylp_log('发货单'); return $this->fetch('',getAdmStoId()); } /** * 订单详情 * @param int $id 订单id */ public function detail($order_id){ $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); if($order['order_status']!=3 && $order['order_status']!=5 && $order['order_status']!=6) { $orderGoods = $orderLogic->getOrderGoods($order_id); }else{ $orderGoods = $orderLogic->getOrderGoods($order_id); } //如果是包邮券的话 if($order['coupon_no'] && $order['coupon_price']<=0){ //拿出包邮券 $wh['a.user_id']= $order['user_id']; $wh['a.store_id']=$order['store_id']; $wh['a.no']=$order['coupon_no']; $bylist=M("user_feemail")->alias('a')->join('coupon b','a.fmid=b.id') ->where($wh) ->field("a.no,b.condition,b.use_start_time,b.use_end_time") ->find(); $this->assign('bylist',$bylist); } $button = $orderLogic->getOrderButton($order); // 获取操作记录 $action_log = M('order_action')->where(array('order_id'=>$order_id,'action_user'=>array('neq',0)))->order('log_time desc')->select(); $userIds = array(); //查找用户昵称 $infousername=""; if($order['order_status']!=3) { if (empty($order['order_status_desc']) || $order['order_status_desc'] == '已取消') { switch ($order['pt_status']) { case "1": $order['order_status_desc'] = "待成团"; break; case "2": if ($order['is_zsorder'] == 4) $order['order_status_desc'] = "待付尾款"; else $order['order_status_desc'] = "已成团"; break; case "3": $order['order_status_desc'] = "拼团失败"; break; case "4": $order['order_status_desc'] = "已支付尾款"; break; case "5": $order['order_status_desc'] = "所有尾款完成"; break; } } } foreach ($action_log as $k => $v) { if ($v['action_user'] == 0) { $infousername = "管理员"; } else { if ($v['user_type'] == 1) { $users = M("admin")->where('store_id', getAdmStoId()) ->where('admin_id', $v['action_user'])->field("ERPName")->find(); if ($users) { $infousername = $users['ERPName']; } } else { $users = M("users")->where('store_id', getAdmStoId()) ->where('user_id', $v['action_user'])->field("user_id,nickname")->find(); if ($users) { $infousername = $users['nickname']; } } } $action_log[$k]['action_username'] = $infousername; } $stoid=getAdmStoId(); $this->assign('store_id',$stoid); $this->assign('users',$users); $this->assign('order',$order); $this->assign('action_log',$action_log); $this->assign('orderGoods',$orderGoods); $split = count($orderGoods) >1 ? 1 : 0; foreach ($orderGoods as $val){ if($val['goods_num']>1){ $split = 1; } } $this->assign('split',$split); $this->assign('button',$button); $oldurl = I('oldurl/s'); $url=urldecode(urldecode(I('oldurl'))); $this->assign('url', $url); // upload_ylp_log('订单详情'); return $this->fetch('',getAdmStoId()); } /** * 订单编辑 * @param int $id 订单id */ public function edit_order(){ $order_id = I('order_id'); $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); // if($order['shipping_status'] != 0){ // $this->error('已发货订单不允许编辑'); // exit; // } $orderGoods = $orderLogic->getOrderGoods($order_id); if(IS_POST) { ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); /*--判断是否是自提--*/ if($order['exp_type']==1){ $order['pickup_id']=I('pickup_id'); //门店修改 $order['admin_note'] = I('admin_note'); // 管理员备注 }else { $aa=I('consignee'); if(!empty($aa)){ $order['consignee'] = I('consignee');// 收货人 } $region_list = get_region_list(); $aa1=I('province'); if($aa1) { $order['province'] = I('province'); // 省份 $areaname = $region_list[I('province')]['name']; } $aa2=I('city'); if($aa2) { $order['city'] = I('city'); // 城市 $areaname .="-". $region_list[I('city')]['name']; } $aa3=I('district'); if($aa3) { $order['district'] = I('district'); // 县 $areaname .= "-" . $region_list[I('district')]['name']; } $aa4=I('twon'); if($aa4) { $order['twon'] = I('twon'); // 县 $areaname .= "-" . $region_list[I('twon')]['name']; } $order['more_address']=$areaname; $aa4=I('address'); if(!empty($aa4)) $order['address'] = I('address'); // 收货地址 $aa5=I('mobile'); if(!empty($aa5)) $order['mobile'] = I('mobile'); // 手机 $aa6=I('invoice_title'); if(!empty($aa6)) $order['invoice_title'] = I('invoice_title');// 发票 $aa7=I('admin_note'); if(!empty($aa7)) $order['admin_note'] = I('admin_note'); // 管理员备注 $aa8=I('shipping'); if(!empty($aa8)) $order['shipping_code'] = I('shipping');// 物流方式 $aa9=I('shipping_name'); if(!empty($aa9)) $order['shipping_name'] = I('shipping_name');//物流名称 $aa10=I('pickup_id'); if(!empty($aa10)) $order['pickup_id'] = I('pickup_id'); //取货门店 $aa11=I('expressno'); if(!empty($aa11)) $order['expressno'] = I('expressno');//快递单号 $delivery_doc['shipping_code']= $order['shipping_code'];// 物流方式 $delivery_doc['shipping_name']=$order['shipping_name'];//物流名称 $delivery_doc['invoice_no']=$order['expressno'];//快递单号 if(!empty($delivery_doc['shipping_code']) && !empty($delivery_doc['invoice_no'])) $d = M('delivery_doc')->where('order_id='.$order_id)->save($delivery_doc); //更改发货单 } if (array_key_exists("store_id",$order)){ unset($order['store_id']); } $o=M('order')->where(array('store_id'=>getAdmStoId(),'order_id'=>$order_id))->save($order); $dd=M("erp_yqty")->where(array('store_id'=>getAdmStoId(),'order_sn'=>$order['order_sn']))->find(); if($dd){ $aa10=I('pickup_id'); if(!empty($aa10)) { $kd['pickup_id'] = I('pickup_id'); //取货门店 M("erp_yqty")->where(array('store_id'=>getAdmStoId(),'order_sn'=>$order['order_sn']))->save($kd); } } $l = $orderLogic->orderActionLog($order_id,'edit','修改订单');//操作日志 // upload_ylp_log('修改订单'); if($o && $l){ $this->success('修改成功',U('Admin/Order/detail',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(); //获取订单地区 $twon = M('region')->where(array('parent_id'=>$order['district'],'level'=>4))->select(); //获取支付方式 $payment_list = M('plugin')->where(array('status'=>1,'type'=>'payment'))->select(); //获取配送方式 $shipping_list=M('store_shipping')->alias('a')->join('shipping b',' a.shipping_id=b.shipping_id')->where(array('a.store_id'=>getAdmStoId(),'a.status'=>1))->select(); //获取门店分类 $pickcate=''; $res=M("pick_up")->where('store_id',getAdmStoId())->select(); //所有门店 $res1=M("storage_category")->where("cat_id in (SELECT category_id FROM wxd_pick_up where store_id=".getAdmStoId().") and store_id=".getAdmStoId()."")->select(); //所有门店分类 //获取门店 $pickupinfo=M("pick_up")->where('store_id',getAdmStoId())->where('pickup_id',$order['pickup_id'])->select(); $pickcate=$pickupinfo[0]['category_id']; $pickup_list=M("pick_up")->where('store_id',getAdmStoId())->where('category_id',$pickcate)->select(); $this->assign('storage_all',json_encode($res)); $this->assign('storage_category',$res1); $this->assign('pickcate',$pickcate); $this->assign('order',$order); $this->assign('province',$province); $this->assign('city',$city); $this->assign('area',$area); $this->assign('twon',$twon); $this->assign('orderGoods',$orderGoods); $this->assign('shipping_list',$shipping_list); $this->assign('payment_list',$payment_list); $this->assign('pickup_list',$pickup_list); return $this->fetch('',getAdmStoId()); } /* * 拆分订单 */ public function split_order(){ $order_id = I('order_id'); $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); if($order['shipping_status'] != 0){ $this->error('已发货订单不允许编辑'); exit; } $orderGoods = $orderLogic->getOrderGoods($order_id); if(IS_POST){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $data = I('post.'); //################################先处理原单剩余商品和原订单信息 $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'])); } $oldArr[] = $val;//剩余商品 } $all_goods[$val['rec_id']] = $val;//所有商品信息 } $result = calculate_price($order['user_id'],$oldArr,$order['shipping_code'],0,$order['province'],$order['city'],$order['district'],0,0,0,0); if($result['status'] < 0) { $this->error($result['msg']); } //修改订单费用 $res['goods_price'] = $result['result']['goods_price']; // 商品总价 $res['order_amount'] = $result['result']['order_amount']; // 应付金额 $res['total_amount'] = $result['result']['total_amount']; // 订单总价 M('order')->where("order_id=".$order_id)->save($res); //################################原单处理结束 //################################新单处理 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]; } } foreach($brr as $goods){ $result = calculate_price($order['user_id'],$goods,$order['shipping_code'],0,$order['province'],$order['city'],$order['district'],0,0,0,0); if($result['status'] < 0) { $this->error($result['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'] = $result['result']['goods_price']; // 商品总价 $new_order['order_amount'] = $result['result']['order_amount']; // 应付金额 $new_order['total_amount'] = $result['result']['total_amount']; // 订单总价 $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);//插入订单商品表 } } //################################新单处理结束 $this->success('操作成功',U('Admin/Order/detail',array('order_id'=>$order_id))); 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('',getAdmStoId()); } /* * 价钱修改 */ public function editprice($order_id){ $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); $this->editable($order); if(IS_POST){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $admin_id = session('admin_id'); if(empty($admin_id)){ $this->error('非法操作'); exit; } $update['discount'] = I('post.discount'); $update['shipping_price'] = I('post.shipping_price'); $update['order_amount'] = $order['goods_price'] + $update['shipping_price'] - $update['discount'] - $order['user_money'] - $order['integral_money'] - $order['coupon_price']; $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('',getAdmStoId()); } /** * 订单删除 * @param int $id 订单id */ public function delete_order($order_id){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $orderLogic = new OrderLogic(); $del = $orderLogic->delOrder($order_id); if($del){ $this->success('删除订单成功'); }else{ $this->error('订单删除失败'); } } /** * 订单取消付款 */ public function pay_cancel($order_id){ if(I('remark')){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $data = I('post.'); $note = array('退款到用户余额','已通过其他方式退款','不处理,误操作项'); if($data['refundType'] == 0 && $data['amount']>0){ accountLog($data['user_id'], $data['amount'], 0, '退款到用户余额'); } $orderLogic = new OrderLogic(); $a=$orderLogic->orderProcessHandle($data['order_id'],'pay_cancel'); if($a== "-1"){ exit(json_encode(array('status' => 0,'msg' => '该订单已经在退款中'))); } $d = $orderLogic->orderActionLog($data['order_id'],'pay_cancel',$data['remark'].':'.$note[$data['refundType']]); if($d){ exit(""); }else{ exit(""); } }else{ $order = M('order')->where("order_id=$order_id")->find(); $this->assign('order',$order); return $this->fetch('',getAdmStoId()); } } /** * 订单打印 * @param int $id 订单id */ public function order_print(){ $order_id = I('order_id'); $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); $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']; $orderGoods = $orderLogic->getOrderGoods($order_id); $shop = tpCache('shop_info',getAdmStoId()); $this->assign('order',$order); $this->assign('shop',$shop); $this->assign('orderGoods',$orderGoods); $template = I('template','print'); // upload_ylp_log('打印'); return $this->fetch($template,getAdmStoId()); } /** * 快递单打印 */ public function shipping_print(){ $order_id = I('get.order_id'); $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); //查询是否存在订单及物流 $shipping = M('plugin')->where(array('code'=>$order['shipping_code'],'type'=>'shipping'))->find(); if(!$shipping){ $this->error('物流插件不存在'); } if(empty($shipping['config_value'])){ $this->error('请设置'.$shipping['name'].'打印模板'); } $shop = tpCache('shop_info',getAdmStoId());//获取网站信息 $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']); if(empty($shipping['config'])){ $config = array('width'=>840,'height'=>480,'offset_x'=>0,'offset_y'=>0); $this->assign('config',$config); }else{ $this->assign('config',unserialize($shipping['config'])); } $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['config_value'] = str_replace($template_var,$content_var, $shipping['config_value']); $this->assign('shipping',$shipping); return $this->fetch("Plugin/print_express",getAdmStoId()); } /** * 生成发货单 */ public function deliveryHandle(){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $data = I('post.'); $orderid = $data['order_id']; $orderLogic = new OrderLogic(); $res = $orderLogic->deliveryHandle($data); if($res){ $this->success('操作成功',U('Admin/Order/delivery_info',array('order_id'=>$data['order_id']))); }else{ $this->error('操作失败',U('Admin/Order/delivery_info',array('order_id'=>$data['order_id']))); } } public function delivery_info(){ $order_id = I('order_id'); $orderLogic = new OrderLogic(); $order = $orderLogic->getOrderInfo($order_id); $orderGoods = $orderLogic->getOrderGoods($order_id); $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);//发货记录 return $this->fetch('',getAdmStoId()); } /** * 发货单列表 */ public function delivery_list(){ return $this->fetch('',getAdmStoId()); } /** * 删除某个退换货申请 */ public function return_del(){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $id = I('get.id'); M('return_goods')->where("id = $id")->delete(); $this->success('成功删除!'); } /** * 退换货操作 */ public function return_info() { $oldurl = I('oldurl/s'); if ($oldurl) { $oldurl = urldecode(urldecode($oldurl)); } else{ $oldurl="Admin/Order/return_list"; } $this->assign('oldurl', $oldurl); $id = I('id'); if($id) $return_goods = M('return_goods')->where("id= $id")->find(); else{ $order_id=I("order_id"); $goods_id=I("goods_id"); $return_goods = M('return_goods')->where("goods_id",$goods_id) ->where("order_id",$order_id)->find(); } if($return_goods['imgs']) $return_goods['imgs'] = explode(',', $return_goods['imgs']); $user = M('users')->where("user_id = {$return_goods[user_id]}")->find(); $goods = M('goods')->where("goods_id = {$return_goods[goods_id]}")->find(); // $type_msg = array('退换','换货','退款'); // $status_msg = array('未处理','处理中','已完成','已拒绝'); if(IS_POST) { ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); // $data['type'] = I('type'); // $data['status'] = I('status/d'); // $data['remark'] = I('remark'); // if($data['status']==1){ // $data['handle_time'] = time(); // } // if($data['status']==2){ // $data['ok_time'] = time(); // } // $note ="退换货:{$type_msg[$data['type']]}, 状态:{$status_msg[$data['status']]},处理备注:{$data['remark']}"; M('return_goods')->where("id= $id")->save(['remark'=>I('remark')]); // if($result) // { // $type = empty($data['type']) ? 2 : 3; // if($type==3) { // $where = " order_id = " . $return_goods['order_id'] . " and goods_id=" . $return_goods['goods_id']; // M('order_goods')->where($where)->save(array('is_send' => $type));//更改商品状态 // } //$orderLogic = new OrderLogic(); //$log = $orderLogic->orderActionLog($return_goods[order_id],'refund',$note); // upload_ylp_log('退换货修改'); $this->success('修改成功!'); exit(); // } } $this->assign('id',$id); // 用户 $this->assign('user',$user); // 用户 $this->assign('goods',$goods);// 商品 $this->assign('return_goods',$return_goods);// 退换货 return $this->fetch('',getAdmStoId()); } /** * 管理员生成申请退货单 */ public function add_return_goods(){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $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){ ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); if($action !=='pay'){ $res = $orderLogic->orderActionLog($order_id,$action,I('note')); } $a = $orderLogic->orderProcessHandle($order_id,$action,array('note'=>I('note'),'admin_id'=>0)); if($res !== false && $a !== false){ if ($action == 'remove') { exit(json_encode(array('status' => 1, 'msg' => '操作成功', 'data' => array('url' => U('admin/order/index'))))); } exit(json_encode(array('status' => 1,'msg' => '操作成功'))); }else{ if ($action == 'remove') { exit(json_encode(array('status' => 0, 'msg' => '操作失败', 'data' => array('url' => U('admin/order/index'))))); } exit(json_encode(array('status' => 0,'msg' => '操作失败'))); } }else{ $this->error('参数错误',U('Admin/Order/detail',array('order_id'=>$order_id))); } } public function order_log(){ /*--清除日志为空的订单--*/ //@new 兼容新模板 $pagenum=20;//每页显示多少条 if ((int)I('pagenum/s')>0) { $pagenum=I('pagenum/s'); } $begin = strtotime(I('add_time_begin')); $end = strtotime(I('add_time_end')); $condition = array(); $where=" where 1=1"; if($begin){ $where.=' and a.log_time>='.$begin; } if($end){ $where.=' and a.log_time<='.$end; } $admin_id = I('admin_id'); if($admin_id >0 ){ $where.=' and a.action_user='.$admin_id; } $log_id= I('order_sn'); if($log_id>0){ $where.=" and b.order_sn='".$log_id."'"; } $where.=" and b.order_sn<>'' and a.store_id=".getAdmStoId(); $order=' order by log_time desc '; //$count = M('order_action')->alias('a') // ->join('order b','a.order_id = b.order_id and a.store_id=b.store_id')->field("a.*,b.order_sn")->count(); //$count= M('order_action')->alias('a')->join('wxd_order b','a.order_id=b.order_id','left')->where('a.order_id=1')->count(); $sql1='select COUNT(a.action_id) num from wxd_order_action a LEFT JOIN wxd_order b on a.order_id=b.order_id and a.store_id=b.store_id '.$where; $sql2='select a.*,b.order_sn from wxd_order_action a LEFT JOIN wxd_order b on a.order_id=b.order_id and a.store_id=b.store_id '.$where.$order; $rs=Db::query($sql1); $count=$rs[0]['num']; $Page = new Page($count,$pagenum); foreach($condition as $key=>$val) { $Page->parameter[$key] = urlencode($val.""); } $show = $Page->show(); $sql3=$sql2.' limit '.$Page->firstRow.','.$Page->listRows; $list = Db::query($sql3); $this->assign('list',$list); $this->assign('pager',$Page); $this->assign('page',$show); $admin = M('admin')->where(" store_id=".getAdmStoId())->getField('admin_id,ERPUser'); $this->assign('admin',$admin); $this->assign('pagenum',$pagenum); $this->assign('oldurl',urlencode(curPageURL())); upload_ylp_log('B16订单日志查询/搜索'); return $this->fetch('',getAdmStoId()); } /** * 检测订单是否可以编辑 * @param $order */ private function editable($order){ if($order['shipping_status'] != 0){ $this->error('已发货订单不允许编辑'); exit; } return; } public function export_order() { //搜索条件 $where = 'where 1=1 '; $consignee = I('consignee'); if($consignee){ $where .= " AND a.consignee like '%$consignee%' "; } $order_sn = I('order_sn'); if($order_sn){ $where .= " AND a.order_sn = '$order_sn' "; } if(I('order_status')){ $where .= " AND a.order_status = ".I('order_status'); } $stoid=getAdmStoId(); $where.=" and a.store_id=".$stoid; $timegap = I('timegap'); if($timegap){ $gap = explode('-', $timegap); $begin = strtotime($gap[0]); $end = strtotime($gap[1]); $where .= " AND a.add_time>$begin and a.add_time<$end "; } $picksle=trim(I('picksle')); $picksle=I('picksle_type'); if($picksle){ if($picksle) $where .= " AND a.pickup_name=".$picksle; else $where .= " AND a.pickup_no=".$picksle; } $sql = "select a*,b.pickup_no,b.pickup_name FROM_UNIXTIME(add_time,'%Y-%m-%d') as create_time from __PREFIX__order a left join __PREFIX__pick_up b on a.pickup_id=b.pickup_id $where order by order_id"; $orderList = DB::query($sql); $strTable =''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if(is_array($orderList)){ $region = M('region')->getField('id,name'); 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=""; foreach($orderGoods as $goods){ $strGoods .= "商品编号:".$goods['goods_sn']." 商品名称:".$goods['goods_name']; if ($goods['spec_key_name'] != '') $strGoods .= " 规格:".$goods['spec_key_name']; $strGoods .= "
"; } unset($orderGoods); $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']].''.$strGoods.'
'; unset($orderList); downloadExcel($strTable,'order'); exit(); } /** * 退货单列表 */ public function return_list(){ $order_sn = trim(I('order_sn')); $status = trim(I('status',"")); $cur_page = 1;//当前页数 if ((int)I('p/s') > 0) { $cur_page = I('p/s'); } // $day = trim(I('day',"")); $name = M("admin")->where('admin_id', getAdminId())->field('ERPUser')->find()['ERPUser']; $this->assign('admin_name',$name); // $this->assign('day',$day); $wx_user=M("wx_user")->where('store_id',getAdmStoId())->field('check_json')->find(); if($wx_user){ $ddd=json_decode($wx_user['check_json'],true); if($ddd['code']==1) $this->assign("is_check_ok", 1); } $this->assign('cur_page',$cur_page); $this->assign('order_sn',$order_sn); $this->assign('status',$status); return $this->fetch('',getAdmStoId()); } /* * ajax 退货订单列表 */ public function ajax_return_list(){ // 搜索条件 $order_sn = trim(I('order_sn')); $status = trim(I('status',"")); $getAdmStoId=getAdmStoId(); $where=" a.store_id=".$getAdmStoId; $cur_page = 1;//当前页数 if ((int)I('p/s') > 0) { $cur_page = I('p/s'); } if($order_sn!="") $where.= " and a.order_sn like '%$order_sn%' "; if($status!="") $where.= " and a.status = '$status' "; $picksle=trim(I('picksle')); $pstype=I('picksle_type'); if($picksle){ if($pstype) $where .= " AND d.pickup_name='".$picksle."'"; else $where .= " AND d.pickup_no='".$picksle."'"; } $count = M('return_goods')->alias('a') ->join('order b','a.order_id=b.order_id') ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id') ->join('(select pickup_id,pickup_name,pickup_no from wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left') ->where($where)->count(); $Page = new AjaxPage($count,13); $show = $Page->show(); $list = M('return_goods')->alias('a') ->join('order b','a.order_id=b.order_id') ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id') ->join('(select pickup_id,pickup_name,pickup_no from wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left') ->where($where) ->field('a.*,b.user_money,b.coupon_price,b.order_amount,b.coupon_no, b.is_zsorder,b.tail_pay_type,b.pt_tail_money,c.mobile,c.nickname,d.pickup_name,d.pickup_no')->order("addtime desc") ->limit("{$Page->firstRow},{$Page->listRows}")->select(); $list_str = M('return_goods')->alias('a') ->join('order b','a.order_id=b.order_id') ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id') ->join('(select pickup_id,pickup_name,pickup_no from wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left') ->where($where) ->field('a.*,b.user_money,b.coupon_price,b.order_amount,b.coupon_no, b.is_zsorder,b.tail_pay_type,b.pt_tail_money,c.mobile,c.nickname,d.pickup_name,d.pickup_no')->order("addtime desc") ->limit("{$Page->firstRow},{$Page->listRows}")->fetchSql(true)->select(); mlog($list_str,'ajax_return_list/'.getAdmStoId()); foreach ($list as $k=>$v){ if($v['is_zsorder']==4){ if($v['tail_pay_type']==1) $list[$k]['user_money']+=$v['pt_tail_money']; else $list[$k]['order_amount']+=$v['pt_tail_money']; } } $oldurl = U('Admin/Order/return_list', array( "order_sn" => $order_sn, "status" => $status, "p" => $cur_page )); session('excelreturn_list_'.getAdmStoId(),$list); $this->assign('oldurl', urlencode($oldurl)); $this->assign('list',$list); $this->assign('pager',$Page); $this->assign('page',$show);// 赋值分页输出 upload_ylp_log('B15退货列表查询/搜索'); return $this->fetch('',getAdmStoId()); } /* * ajax 退货订单单页导出 */ public function export_returnlist_report_page() { $orderList = session('excelreturn_list_' . getAdmStoId()); $page=I('page/d',1); if (empty($orderList)) { return json(array('code' => -1, 'msg' => '无数据')); } $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $getrowspan = ""; if (is_array($orderList)) { foreach ($orderList as $k => $val) { switch ($val['status']) { case "0": $val['order_status_desc'] = "未处理"; break; case "1": $val['order_status_desc'] = "处理中"; break; case "2": $val['order_status_desc'] = "已完成"; break; case "3": $val['order_status_desc'] = "已拒绝"; break; } $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
用户手机用户昵称订单编号所属门店商品编号商品名称类型退款金额申请日期状态退货原因退货描述退款单号操作人
 ' . $val['mobile'] . ' ' . $val['nickname'] . ' ' . $val['order_sn'] . ' ' . $val['pickup_no'] . '(' . $val['pickup_name'] . ') ' . getregoodssn($val) . ' ' . getregoodsname($val) . ' ' . ($val['refund_type'] == '0' ? '用户余额' : '原路返回') . ' ' . $val['back_money'] . ' ' . date('Y-m-d H:i:s', $val['addtime']) . '  ' . $val['order_status_desc'] . ' ' . $val['reason'] . ' ' . $val['user_remark'] . ' ' . $val['wxrefund_no'] . ' ' . $val['refund_admin'] . '
'; echo $strTable; unset($orderList); downloadExcel($strTable, '退款订单'.$page); exit(); } /* * ajax 退货订单单页导出 */ public function export_returnlist_report(){ // 搜索条件 $order_sn = trim(I('order_sn')); $status = trim(I('status',"")); $getAdmStoId=getAdmStoId(); $where=" a.store_id=".$getAdmStoId; if($order_sn!="") $where.= " and a.order_sn like '%$order_sn%' "; if($status!="") $where.= " and a.status = '$status' "; $picksle=trim(I('picksle')); $pstype=I('picksle_type'); if($picksle){ if($pstype) $where .= " AND d.pickup_name='".$picksle."'"; else $where .= " AND d.pickup_no='".$picksle."'"; } $list = M('return_goods')->alias('a') ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id') ->join('order b','a.order_id=b.order_id') ->join('(select pickup_id,pickup_name,pickup_no from wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left') ->where($where) ->field('a.*,b.user_money,b.coupon_price,b.order_amount,b.coupon_no, b.is_zsorder,b.tail_pay_type,b.pt_tail_money,c.nickname,c.mobile,d.pickup_name,d.pickup_no')->order("addtime desc") ->select(); foreach ($list as $k=>$v){ if($v['is_zsorder']==4){ if($v['tail_pay_type']==1) $list[$k]['user_money']+=$v['pt_tail_money']; else $list[$k]['order_amount']+=$v['pt_tail_money']; } } if (empty($list)) { return json(array('code' => -1, 'msg' => '无数据')); } $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $getrowspan = ""; if (is_array($list)) { foreach ($list as $k => $val) { switch ($val['status']) { case "0": $val['order_status_desc'] = "未处理"; break; case "1": $val['order_status_desc'] = "处理中"; break; case "2": $val['order_status_desc'] = "已完成"; break; case "3": $val['order_status_desc'] = "已拒绝"; break; } $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
用户手机用户昵称订单编号所属门店商品编号商品名称类型退款金额申请日期状态退货原因退货描述退款单号操作人
 ' . $val['mobile'] . ' ' . $val['nickname'] . ' ' . $val['order_sn'] . ' ' . $val['pickup_no'] . '(' . $val['pickup_name'] . ') ' . getregoodssn($val) . ' ' . getregoodsname($val) . ' ' . ($val['refund_type'] == '0' ? '用户余额' : '原路返回') . ' ' . $val['back_money'] . ' ' . date('Y-m-d H:i:s', $val['addtime']) . '  ' . $val['order_status_desc'] . ' ' . $val['reason'] . ' ' . $val['user_remark'] . ' ' . $val['wxrefund_no'] . ' ' . $val['refund_admin'] . '
'; echo $strTable; unset($list); downloadExcel($strTable, '退款订单'); exit(); } /** * 添加一笔订单 */ public function add_order() { $order = array(); // 获取省份 $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(); // 获取配送方式 //$shipping_list = M('plugin')->where(array('status'=>1,'type'=>'shipping'))->select(); $sql="SELECT a.*,b.shipping_code,b.shipping_name,b.shipping_logo FROM __PREFIX__store_shipping a "; $sql.="left join __PREFIX__shipping b on a.shipping_id=b.shipping_id where a.store_id=".getAdmStoId(); $shipping_list=DB::query($sql); // var_dump($shipping_list); // die(); // Db::table('__PREFIX__store_shipping') // ->alias('a') // ->join('__PREFIX__shipping b','a.shipping_id = b.shipping_id') // ->select(); // 获取支付方式 $payment_list = M('plugin')->where(array('status'=>1,'type'=>'payment'))->select(); if(IS_POST) { ClearALLCache(); delFile(TEMP_PATH."/".getAdmStoId()); $order['store_id']=getAdmStoId(); $order['user_id'] = I('user_id');// 用户id 可以为空 $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['admin_note'] = I('admin_note'); // 管理员备注 $order['order_sn'] = date('YmdHis').mt_rand(1000,9999); // 订单编号; $order['admin_note'] = I('admin_note'); // $order['add_time'] = time(); // $order['shipping_code'] = I('shipping');// 物流方式 $order['shipping_name'] = M('plugin')->where(array('status'=>1,'type'=>'shipping','code'=>I('shipping')))->getField('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"); $orderLogic = new OrderLogic(); $order_goods = $orderLogic->get_spec_goods($goods_id_arr); $result = calculate_price($order['user_id'],$order_goods,$order['shipping_code'],0,$order[province],$order[city],$order[district],0,0,0,0,getAdmStoId()); if($result['status'] < 0) { $this->error($result['msg']); } $order['goods_price'] = $result['result']['goods_price']; // 商品总价 $order['shipping_price'] = $result['result']['shipping_price']; //物流费 $order['order_amount'] = $result['result']['order_amount']; // 应付金额 $order['total_amount'] = $result['result']['total_amount']; // 订单总价 // 添加订单 $order_id = M('order')->add($order); $order_insert_id = DB::getLastInsID(); if($order_id) { foreach($order_goods as $key => $val) { $val['store_id']=getAdmStoId(); $val['order_id'] = $order_id; $rec_id = M('order_goods')->add($val); if(!$rec_id) $this->error('添加失败'); } $this->success('添加商品成功',U("Admin/Order/detail",array('order_id'=>$order_insert_id))); exit(); } else{ $this->error('添加失败'); } } $this->assign('shipping_list',$shipping_list); $this->assign('payment_list',$payment_list); $this->assign('province',$province); $this->assign('city',$city); $this->assign('area',$area); return $this->fetch('',getAdmStoId()); } /** * 选择搜索商品 */ public function search_goods() { $brandList = M("brand")->select(); $categoryList = M("goods_category")->select(); $this->assign('categoryList',$categoryList); $this->assign('brandList',$brandList); $where = ' is_on_sale = 1 ';//搜索条件 $count=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')."%')" ; } $goodsList = M('goods')->where($where)->order('goods_id DESC')->limit(10)->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('goodsList',$goodsList); return $this->fetch('',getAdmStoId()); } 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 return_refuse(){ $id=I('id/d'); $remark=I('remark/s'); M('return_goods')->where('id',$id)->save(['remark'=>$remark,'status'=>3,'ok_time'=>time()]); return json(1); } //搜索换货商品 public function exchange_search() { $wh = I('post.'); $sto_id = getAdmStoId(); $mz_switch = tpCache('shopping.is_beauty', $sto_id); $vip = 0; $time = time(); if ($wh['exp'] == 0) { $exp = 2; } else { $exp = 1; } if (!empty($mz_switch)) $vip = M('users')->where('user_id', $wh['user_id'])->field('is_mzvip')->find()['is_mzvip']; // dump($wh);die; if ($wh['type']) {//秒杀 $goods = M('flash_sale')->alias('a')->join('goods b', 'a.goods_id = b.goods_id', 'left') ->where(['b.goods_sn' => $wh['sn'], 'b.store_count' => ['>', 0], 'a.store_id' => $sto_id, 'b.distr_type' => [['=', 0], ['=', $exp], 'or'], 'b.is_on_sale' => 1, 'b.on_time' => ['<', $time], 'b.down_time' => [['>', $time], ['=', 0], 'or']])->where('a.price=' . $wh['price'] . '') ->field('a.price,b.goods_name,b.goods_id,b.store_count,a.goods_num,a.is_end,a.buy_limit,a.buy_num')->find(); if (empty($goods)) { return json(['code' => 0, 'msg' => '未找到符合的秒杀商品']); } if ($goods['is_end'] == 0) { if ($goods['goods_num'] - $goods['buy_num'] == 0) { return json(['code' => 0, 'msg' => '该秒杀商品库存不足']); } } else { $goods['buy_limit'] = 1000; } } else { if ($vip) { $goods = M('goods')->where(['mz_price' => $wh['price'], 'goods_sn' => $wh['sn'], 'distr_type' => [['=', 0], ['=', $exp], 'or'], 'prom_type' => 0, 'store_count' => ['>', 0], 'store_id' => $sto_id, 'is_on_sale' => 1, 'on_time' => ['<', $time], 'down_time' => [['>', $time], ['=', 0], 'or']])->field('goods_id,store_count,mz_price as price,goods_name')->find(); if (empty($goods)) { return json(['code' => 0, 'msg' => '未找到符合的美妆价商品']); } } else { $goods = M('goods')->where(['shop_price' => $wh['price'], 'goods_sn' => $wh['sn'], 'distr_type' => [['=', 0], ['=', $exp], 'or'], 'prom_type' => 0, 'store_count' => ['gt', 0], 'store_id' => $sto_id, 'is_on_sale' => 1, 'on_time' => ['<', $time], 'down_time' => [['>', $time], ['=', 0], 'or']])->field('goods_id,store_count,shop_price as price,goods_name')->find(); $goodsstr = M('goods')->where(['shop_price' => $wh['price'], 'goods_sn' => $wh['sn'], 'distr_type' => [['=', 0], ['=', $exp], 'or'], 'prom_type' => 0, 'store_count' => ['gt', 0], 'store_id' => $sto_id, 'is_on_sale' => 1, 'on_time' => ['<', $time], 'down_time' => [['>', $time], ['=', 0], 'or']])->field('goods_id,store_count,shop_price as price,goods_name')->fetchSql(true)->find(); if (empty($goods)) { return json(['code' => 0, 'msg' => '未找到符合的商品']); } } $goods['buy_limit'] = 1000; } return json(['code' => 1, 'data' => $goods]); } //换货操作 public function exchange_goods() { $oid = I('oid/d');//订单id $gid = I('gid/d');//商品id $type = I('type/d', 0);//商品活动类型 $num = I('goods_num/d');//替换数量 $uid = I('uid/d');//用户id $ex_gid = I('ex_gid/d');//替换商品id $sto_id = getAdmStoId(); $order = M('order')->alias('a')->join('order_goods b', 'a.order_id=b.order_id') ->where(['a.user_id' => $uid, 'a.order_id' => $oid, 'b.goods_id' => $gid, 'a.order_status' => ['lt', 2], 'a.shipping_status' => 0]) ->field('b.*,a.pickup_id')->find(); if (empty($order)) { return json(['code' => 0, 'msg' => '非法操作']); } $log = M('rebate_log')->where(['order_id'=>$oid])->find(); if (!empty($log)){ if (empty($log['commission_json'])){ return json(['code' => 0, 'msg' => '暂时还不能换货']); } $json = json_decode($log['commission_json'],true); foreach ($json as $v){ if ($gid == $v['goods_id']){ return json(['code' => 0, 'msg' => '此商品是分销商品,不能换']); } } } if ($type) { $goods = M('flash_sale')->alias('a')->join('goods b', 'a.goods_id = b.goods_id') ->where(['a.goods_id' => $ex_gid, 'a.store_id' => $sto_id]) ->field('b.goods_id,b.goods_name,b.goods_sn,b.market_price,b.cost_price,a.id')->find(); } else { $goods = M('goods')->where(['store_id' => $sto_id, 'goods_id' => $ex_gid]) ->field('goods_id,goods_name,goods_sn,market_price,cost_price')->find(); } if (empty($goods)) { return json(['code' => 0, 'msg' => '非法操作']); } $rule = tpCache('basic.sales_rules', $sto_id);//获取线下线上规则 $out = M('erp_yqty')->where(['order_sn' => $order['order_sn'], 'store_id' => $sto_id, 'goods_id' => $gid])->field('id,out_qty')->find(); M('goods')->where('goods_id', $ex_gid)->setInc('sales_sum', $num); // 增加换购商品销售量 M('goods')->where('goods_id', $gid)->setDec('sales_sum', $num); // 减少被换商品销售量 if (!empty($out)) { M('erp_yqty')->where('id', $out['id'])->setDec('out_qty', $num);//扣除预出库库存 } else { M('goods')->where('goods_id', $gid)->setInc('store_count', $num);//增加商品库存 } if ($rule == 1 || $type == 1) {//线上销售规则或者活动类型为秒杀 M('goods')->where('goods_id', $ex_gid)->setDec('store_count', $num);//减少换购商品库存 } else { $data = [ 'order_sn' => $order['order_sn'], 'store_id' => $sto_id, 'goods_id' => $ex_gid, 'pickup_id' => $order['pickup_id'], 'out_qty' => $num, 'updatetime' => time(), ]; M('erp_yqty')->save($data);//添加换购商品预出库库存 } $new = $order; unset($new['pickup_id']); unset($new['rec_id']); $new['goods_id'] = $goods['goods_id']; $new['goods_name'] = $goods['goods_name']; $new['goods_sn'] = $goods['goods_sn']; $new['goods_num'] = $num; $new['market_price'] = $goods['market_price']; $new['cost_price'] = $goods['cost_price']; $new['prom_id'] = (int)$goods['id']; $new['remark'] = '换货'; if ($num < $order['goods_num']) { if ($type) {//秒杀商品增加减少相应数量 M('flash_sale')->where('id', $goods['id'])->setInc('buy_num', $num); M('flash_sale')->where('id', $goods['id'])->setInc('order_num'); M('flash_sale')->where('id', $order['prom_id'])->setDec('buy_num', $num); } M('order_goods')->save($new);//换购数量少于购买商品数量,增加order_goods一条记录 } else { if ($type) {//秒杀商品增加减少相应数量 M('flash_sale')->where('id', $goods['id'])->setInc('buy_num', $num); M('flash_sale')->where('id', $goods['id'])->setInc('order_num'); M('flash_sale')->where('id', $order['prom_id'])->setDec('buy_num', $num); M('flash_sale')->where('id', $order['prom_id'])->setDec('order_num'); } M('order_goods')->where('rec_id', $order['rec_id'])->save($new);//更新数据 } //添加换货记录 $res = [ 'order_id' => $order['order_id'], 'order_sn' => $order['order_sn'], 'goods_id' => $gid, 'exchange_num' => $num, 'exchange_id' => $ex_gid, 'goods_price' => $order['goods_price'], 'prom_type' => (int)$type, 'store_id' => $sto_id ]; M('exchange_log')->save($res); return json(['code' => 1, 'msg' => '操作成功']); } //退款文档 public function explain_word(){ return $this->fetch('',getAdmStoId()); } //发货操作 public function fhorder() { $oid = I('oid/d');//订单id $expressno = substr(I('expressno'),0,30);//快递单号 $sto_id = getAdmStoId(); if (empty($oid) || empty($sto_id)) { return json(['STATE' =>-1, 'MSG' => '参数有误']); } $where['a.order_id']=$oid; $where['a.store_id']=$sto_id; $fiedlist = "o.user_id,a.order_sn,a.goods_name,a.give_integral,a.goods_num,a.goods_price"; $fiedlist .= ",(case when (case when k.goods_id_list<>'' then k.status else r.status end)=0 or (case when k.goods_id_list<>'' then k.status else r.status end)=1 then 1 when (case when k.goods_id_list<>'' then k.status else r.status end)=2 then 2 else 0 end) as return_status"; $res = D('order_goods')->alias("a") ->join("return_goods r", ' r.order_sn=a.order_sn and r.goods_id=a.goods_id', "left") ->join("return_goods k", " k.order_sn=a.order_sn and k.goods_id_list<>''", "left") ->join("order o", ' o.order_id=a.order_id', "left") ->where($where)->field($fiedlist)->select(); if (empty($res)) { return json(['STATE' => -1, 'MSG' => '找不到相关信息']); } $ordergoods_name=""; $getbuyuser_id=$res[0]['user_id']; foreach ($res as $k => $v) { $order_sn=$v['order_sn']; if ($v['return_status']) { $ordergoods_name.=$v['goods_name']."(".$v['goods_sn'].")/"; } $getgoods_integral=0; $getgoods_price=0; $point_rate=0; //有效总金额 if (empty($v['return_status']) && $v['give_integral']) { $getgoods_price=(float)($v['goods_num']*$v['goods_price']); } //积分 $getpoint_rate = tpCache('shopping.point_rate', $sto_id); if ($getpoint_rate) { $getpoint_rate=json_decode($getpoint_rate,true); $point_rate=$getpoint_rate['integral']/$getpoint_rate['money']; } if ($point_rate && $getgoods_price) { $getgoods_integral=round($getgoods_price*$point_rate); } $user_info=M('users')->where(array('user_id'=>$getbuyuser_id))->find(); if ($user_info) { accountLog($user_info["user_id"], 0, $getgoods_integral, '购买商品赠送', 0, $sto_id, $user_info["pay_points"]);//线上表 } // } if ($ordergoods_name) { return json(['STATE' => -1, 'MSG' => $ordergoods_name."为申请退款状态,不允许出库"]); } $getisgo=0; if ($expressno) { $update_order=M('order')->where(array('order_id'=>$oid,'exp_type'=>0))->save(array('expressno'=>$expressno)); if ($update_order) { $getisgo=1; } } else { $getisgo=1; } if (empty($getisgo)) { return json(['STATE' => -1, 'MSG' => '正在处理中']); } // $postStr = "{\"NUMBER\":\"" . $order_sn . "\",\"ERPUSERID\":\"". Cookie::get("newshop_admin_erpuser")."\"}"; $api_order=httpRequest(curHostURL() . "/home/api/order", "POST", $postStr); $api_order=json_decode($api_order,true); if ($api_order['STATE']==1) { return json(['STATE' => 1, 'MSG' => '发货成功']); } else { return json(['STATE' => -1, 'MSG' => $api_order['MSG']]); } } //确认是否发货,订单是否完成 public function check_refuse(){ $sn=I('sn'); $stoid=getAdmStoId(); $rs=M("order")->where("order_sn",$sn)->where('store_id',$stoid)->find(); if(!$rs) return json(['code' => -1, 'msg' => "查无此单"]); if($rs['order_status']==2) return json(['code' => -1, 'msg' => "此订单已经核销完成,无法完成退款操作,请点击拒绝退款"]); return json(['code' => 0, 'msg' => "查找成功"]); } public function check_refuse2(){ $id=I("id"); $stoid=getAdmStoId(); $rs=M("return_goods")->where('id',$id) ->where('store_id',$stoid)->find(); if(!$rs) return json(['code' => -1, 'msg' => "查无此单"]); $rs2=M("order")->where("order_sn",$rs['order_sn'])->where('store_id',$stoid)->find(); if(!$rs2) return json(['code' => -1, 'msg' => "查无此单"]); if($rs2['order_status']==2) return json(['code' => -1, 'msg' => "此订单已经核销完成,无法完成退款操作,请点击拒绝退款"]); return json(['code' => 0, 'msg' => "查找成功"]); } }