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 .= 'POS调单时间 | ';
$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 .= ' ' . $val['order_sn'] . ' | ';
$strTable .= ' ' . $val['add_time'] . ' | ';
$strTable .= ' ' .($val['pay_time']=="0"?'':$val['pay_time1']). ' | ';
$strTable .= ' ' .($val['erp_givetime']=="0"?'':date('Y-m-d H:i:s',$val['erp_givetime'])). ' | ';
$strTable .= ' ' . $val['consignee'] . ' | ';
// $strTable .= '' . $val['goods_num'] . ' | ';
$strTable .= '' . $val['goods_price'] . ' | ';
$strTable .= '' . $val['shipping_price'] . ' | ';
$strTable .= '' . $val['total_amount'] . ' | ';
$strTable .= ' ' . $val['order_status_desc'] . ' | ';
$strTable .= ' ' . $val['mobile'] . ' | ';
$strTable .= ' ' . $val['ADDRESS'] . ' | ';
$strTable .= ' ' . ($val['exp_type'] == '0' ? '物流' :'自提') . ' | ';
$strTable .= ' ' . $val['expressno'] . ' | ';
$strTable .= ' ' . $val['shipping_name'] . ' | ';
$strTable .= ' ' . ($val['pickup_no']) . ' | ';
$strTable .= ' ' . ($val['pickup_name']) . ' | ';
$strTable .= ' ' . $val['user_note'] . ' | ';
$strTable .= ' ' . $val['admin_note'] . ' | ';
if ($res_goods) {
foreach ($res_goods as $k1 => $val1) {
if ($k1 > 0) {
$strTable .= '
';
}
$strTable .= ' ' . $val1['goods_sn'] . ' | ';
$strTable .= ' ' . ($val1['sku']) . ' | ';
$strTable .= ' ' . ($val1['goods_name']) . ' | ';
$strTable .= '' . ($val1['goods_num']) . ' | ';
$strTable .= '' . $val1['goods_price'] . ' | ';
if ($k1 > 0) {
$strTable .= '
';
}
}
}else
{
$strTable .= ' | ';
$strTable .= ' | ';
$strTable .= ' | ';
$strTable .= ' | ';
}
}
}
$strTable .= '
';
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 .= ' '.$val['order_sn'].' | ';
$strTable .= ''.$val['create_time'].' | ';
$strTable .= ''.$val['consignee'].' | ';
$strTable .= ''."{$region[$val['province']]},{$region[$val['city']]},{$region[$val['district']]},{$region[$val['twon']]}{$val['address']}".' | ';
$strTable .= ''.$val['mobile'].' | ';
$strTable .= ''.$val['goods_price'].' | ';
$strTable .= ''.$val['order_amount'].' | ';
$strTable .= ''.$val['pay_name'].' | ';
$strTable .= ''.$this->pay_status[$val['pay_status']].' | ';
$strTable .= ''.$this->shipping_status[$val['shipping_status']].' | ';
$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 .= ''.$strGoods.' | ';
$strTable .= '
';
}
}
$strTable .='
';
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 .= ' ' . $val['mobile'] . ' | ';
$strTable .= ' ' . $val['nickname'] . ' | ';
$strTable .= ' ' . $val['order_sn'] . ' | ';
$strTable .= ' ' . $val['pickup_no'] . '(' . $val['pickup_name'] . ') | ';
$strTable .= ' ' . getregoodssn($val) . ' | ';
$strTable .= ' ' . getregoodsname($val) . ' | ';
$strTable .= ' ' . ($val['refund_type'] == '0' ? '用户余额' : '原路返回') . ' | ';
$strTable .= ' ' . $val['back_money'] . ' | ';
$strTable .= ' ' . date('Y-m-d H:i:s', $val['addtime']) . ' | ';
$strTable .= ' ' . $val['order_status_desc'] . ' | ';
$strTable .= ' ' . $val['reason'] . ' | ';
$strTable .= ' ' . $val['user_remark'] . ' | ';
$strTable .= ' ' . $val['wxrefund_no'] . ' | ';
$strTable .= ' ' . $val['refund_admin'] . ' | ';
$strTable .= '
';
}
}
$strTable .= '
';
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 .= ' ' . $val['mobile'] . ' | ';
$strTable .= ' ' . $val['nickname'] . ' | ';
$strTable .= ' ' . $val['order_sn'] . ' | ';
$strTable .= ' ' . $val['pickup_no'] . '(' . $val['pickup_name'] . ') | ';
$strTable .= ' ' . getregoodssn($val) . ' | ';
$strTable .= ' ' . getregoodsname($val) . ' | ';
$strTable .= ' ' . ($val['refund_type'] == '0' ? '用户余额' : '原路返回') . ' | ';
$strTable .= ' ' . $val['back_money'] . ' | ';
$strTable .= ' ' . date('Y-m-d H:i:s', $val['addtime']) . ' | ';
$strTable .= ' ' . $val['order_status_desc'] . ' | ';
$strTable .= ' ' . $val['reason'] . ' | ';
$strTable .= ' ' . $val['user_remark'] . ' | ';
$strTable .= ' ' . $val['wxrefund_no'] . ' | ';
$strTable .= ' ' . $val['refund_admin'] . ' | ';
$strTable .= '
';
}
}
$strTable .= '
';
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' => "查找成功"]);
}
}