$merchant_id, 'b.store_id' => $store_id, 'b.order_type' => array('in', '2,3'), 'b.type' => 1, 'b.pay_state' => array('neq', 0), 'o.order_genre' => array('in', '1,2,3,4') ); if (!empty($order_type)) { $where['b.order_type'] = $order_type; } if (!empty($order_genre)) { $where['o.order_genre'] = $order_genre; } if (!empty($status)) { switch ($status) { case 1: //待审核 $where['b.refund_status'] = 1; $where['o.status'] = array('in', '1,3'); break; case 2: //已完成 $where['b.refund_status'] = 2; $where['o.status'] = array('in', '2,3'); break; case 3: //待用户发货 $where['b.refund_status'] = 3; $where['o.status'] = array('in', '1,3'); break; case 4: //待商家收货 $where['b.refund_status'] = 4; $where['o.status'] = array('in', '1,3'); break; case 5: //待发货/退款 $where['b.refund_status'] = 5; $where['o.status'] = array('in', '1,3'); break; case 6: //驳回 $where['b.refund_status'] = 6; $where['o.status'] = array('in', '1,3'); break; case 7: //撤销申请 $where['b.refund_status'] = 7; $where['o.status'] = array('in', '1,3'); break; case 8: //配送中 $where['b.refund_status'] = 5; $where['o.status'] = 2; break; default: $where['b.refund_status'] = 1; break; } } // 时间 查询条件 switch ($type) { case 1: //今天 $start_time = strtotime(date('Y-m-d 0:0:0', time())); $end_time = strtotime(date('Y-m-d 0:0:0', time())) + 86400; $time_str = $start_time . ',' . $end_time; $where['b.add_time'] = array('between', $time_str); break; case 2: //昨天 $start_time = strtotime(date('Y-m-d 0:0:0', strtotime("-1day"))); $end_time = strtotime(date('Y-m-d 0:0:0', strtotime("-1day"))) + 86400; $time_str = $start_time . ',' . $end_time; $where["b.add_time"] = array('between', $time_str); break; case 3: //本周 $start_time = strtotime(date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600))); $end_time = strtotime(date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600))) + 86399; $time_str = $start_time . ',' . $end_time; $where["b.add_time"] = array('between', $time_str); break; case 4: //其他 $start_time = strtotime(date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600))); $where["b.add_time"] = array('lt', $start_time); break; default: $start_time = strtotime(date('Y-m-d 0:0:0', time())); $end_time = strtotime(date('Y-m-d 0:0:0', time())) + 86400; $time_str = $start_time . ',' . $end_time; $where["b.add_time"] = array('between', $time_str); break; } if (!empty($order_no)) { $where['b.order_no'] = array('like', "%" . $order_no . "%"); if (!empty($where["b.add_time"])) { unset($where["b.add_time"]); } } switch ($order_genre) { case 1: //普通订单 $order_info = $BillModel->getOnlineOrder($where, $page, $limit); break; case 2: //拼团订单 $order_info = $BillModel->getOnlineGroupOrder($where, $page, $limit); break; case 3: //秒杀订单 $order_info = $BillModel->getOnlineSkillOrder($where, $page, $limit); break; case 4: //售后订单 $order_info = $BillModel->getAdvanceOrder($where, $page, $limit); } $order_list = $order_info['data']; $order_count = $order_info['count']; if ($order_list) { $SellModel = new RetailSellModel(); $BillReasonModel = D("RetailBillReason"); $fields = array( "vip_discount", "goods_id", "goods_img_id", "goods_name", "num", "price", "vip_price", "original_price", "plus_vip_price", "all_money", "attribute_state", "sku_json_info", "pricing_method", "vip_discount", "integral_dis_money", "integral_marketing", "mem_integral", "company", 'id', 'serial_number_state', 'sell_id', 'sku_id' ); $SerialClass = new SerialNumberGoods(); foreach ($order_list as $key => &$val) { $val['index'] = $key + 1; if ($val['refund_status'] == 2) { $val['finish_time'] = date("Y-m-d H:i:s", $val['finish_time']); } $val['add_time'] = date("Y-m-d H:i:s", $val['add_time']); if (!empty($val['vid'])) { $val['identity'] = "会员"; } else { $val['identity'] = "散客"; } if ($val['order_type'] == 2) { $val['order_name'] = "退款"; } else if ($val['order_type'] == 3) { $val['order_name'] = "换货"; } switch ($val['refund_status']) { case 1: $val['status_name'] = "待审核"; break; case 2: if ($val['order_type'] == 2) { $val['status_name'] = "已退款"; } else if ($val['order_type'] == 3) { $val['status_name'] = "已换货"; } break; case 3: $val['status_name'] = "待客户发货"; break; case 4: $val['status_name'] = "待商家收货"; break; case 5: if ($val['order_type'] == 2) { $val['status_name'] = "待退款"; } else if ($val['order_type'] == 3) { switch ($val['status']) { case 1: $val['status_name'] = "待商家发货"; break; case 2: $val['status_name'] = "商家已发货"; break; case 3: $val['status_name'] = "客户已收货"; break; } if ($val['status'] == 1 || $val['status'] == 2) { switch ($val['delivery_type']) { case 1: if ($val['status'] == 1) { $val['order_status'] = 0; } break; case 2: $DaOrderModel = D('RetailDaOrder'); $clerkinfo = $DaOrderModel->getOrderFind(array("order_no" => strval($val["order_no"]), $DaOrderModel::ID => $val["delivery_record_id"]), '*', 'id desc'); $val['order_status'] = $clerkinfo["order_status"]; break; case 3: //Uu配送转成达达订单状态显示 $uuOrderModel = D('RetailUuOrder'); $state_uu = $uuOrderModel->getOrderFindField(array("origin_id" => $val["id"], "id" => $val["delivery_record_id"]), "state", 'id desc'); if ($state_uu == 1) { $val['order_status'] = 1; //待接单 } else if ($state_uu == 3 || $state_uu == 4) { $val['order_status'] = 2; //待取货 } else if ($state_uu == 5 || $state_uu == 6) { $val['order_status'] = 3; //配送中 } else { $val['order_status'] = 4; //已收货 } break; case 5: //码科配送 $MakeOrderModel = new MakeOrderModel(); $status = $MakeOrderModel->getOrderFindField(['bill_id' => $val['id']], "status", "id desc"); switch ($status) { case 'payed': //待接单 $val['order_status'] = 1; break; case 'accepted': //'待取件 $val['order_status'] = 2; break; case 'geted': //待收件 $val['order_status'] = 3; break; case 'gotoed': //待评价 $val['order_status'] = 4; break; case 'completed': //订单已完成 $val['order_status'] = 4; break; case 'cancel': //已取消 $val['order_status'] = 5; break; } break; } } } break; case 6: $val['status_name'] = "驳回请求"; break; case 7: $val['status_name'] = "客户撤销申请"; break; } $val['notes'] = ''; if ($val['refund_status'] == 1 && $val['order_type'] == 2 && $val['status'] == 1) { if ($val['order_type'] == 2) { $val['notes'] = '退款申请(客户还未收到商品)'; } } else if ($val['refund_status'] == 1) { if ($val['order_type'] == 2) { $val['notes'] = '退款申请(客户已收到商品)'; } else { $val['notes'] = '换货申请(客户已收到商品)'; } } $reason = $BillReasonModel->getFind(array('bill_id' => $val['id'])); $reason['img_path'] = array(); if (!empty($reason['goods_img_id'])) { $reason_img = explode(",", $reason['goods_img_id']); foreach ($reason_img as $value) { $reason['img_path'][] = D('ImageGallery')->getImagePath($value); } } $val['reason'] = $reason; $sellList = $SellModel->getSelect(array("bill_id" => $val['id']), $fields); foreach ($sellList as &$v) { if ($v['integral_marketing'] == 2) { $v['price'] = floatval($v['price']) . '+' . $v['mem_integral'] . '积分'; $v['all_money'] = round($v['all_money'] + $v['integral_dis_money'], 2); } else { $v['price'] = floatval($v['price']); $v['all_money'] = floatval($v['all_money']); } $v['original_price'] = floatval($v['original_price']); $v['vip_price'] = floatval($v['vip_price']); $v['plus_vip_price'] = floatval($v['plus_vip_price']); $v['num'] = floatval($v['num']); if ($v['attribute_state'] == 2) { $v['sku_name'] = json_decode($v["sku_json_info"], true)['name']; } else { $v['sku_name'] = ''; } $v['image'] = D('ImageGallery')->getImgPath(['id' => $v['goods_img_id']]); //串号信息 if ($v['serial_number_state'] == 1) { $sell_id = $SellModel->getFindField([ 'sell_id'=>$v['sell_id'] ],'id',true); array_push($sell_id,$v['sell_id']); $result = $SerialClass->sellSerialList([ 'id' => ['in',$sell_id], 'type' => 2, 'files' => 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two' ]); $v['refund_serial_list'] = $result['data']['list']; $result = $SerialClass->sellSerialList([ 'id' => $v['id'], 'files' => 'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two' ]); $v['retired_serial_list'] = $result['data']['list'] ? $result['data']['list'] : []; } } //优惠金额 $val['discount_amount'] = round($val["coupon_money"] + $val["vip_dis_money"] + $val['vip_less_money'], 2); //积分抵扣 $val['integral_dis_money'] = floatval($val['integral_dis_money']); if ($val['order_type'] == 2 && ($val['refund_status'] != 2 || $val['refund_status'] == 6)) { $val['all_money'] = round($val['all_money'] + $val['delivery_fee'], 2); } $val['sell_list'] = $sellList; unset($sellList); unset($reason); } } switch ($order_type) { case 2: $refund_order_count = $BillModel->getBillCount($where); $refund_money = $BillModel->getDiscountSum($where, "b.all_money"); $where['b.refund_status'] = 2; $refund_money_actual = $BillModel->getDiscountSum($where, "b.all_money"); break; case 3: $exchange_order_count = $BillModel->getBillCount($where); break; default: $where['b.order_type'] = 2; $refund_order_count = $BillModel->getBillCount($where); $refund_money = $BillModel->getDiscountSum($where, "b.all_money"); $where['b.refund_status'] = 2; $refund_money_actual = $BillModel->getDiscountSum($where, "b.all_money"); unset($where['b.refund_status']); $where['b.order_type'] = 3; $exchange_order_count = $BillModel->getBillCount($where); break; } $refund_order_count = $refund_order_count ? $refund_order_count : 0; $exchange_order_count = $exchange_order_count ? $exchange_order_count : 0; $refund_money = $refund_money ? round($refund_money, 2) : 0; $refund_money_actual = $refund_money_actual ? $refund_money_actual : 0; $res['status'] = 1; $res['msg'] = '查询成功'; $res['order_list'] = $order_list; $res['order_count'] = $order_count; //订单数 $res['refund_order_count'] = $refund_order_count; //退款订单 $res['exchange_order_count'] = $exchange_order_count; //换货订单 $res['refund_money'] = $refund_money; //申请退款金额 $res['refund_money_actual'] = $refund_money_actual; //已退款金额 $this->ajaxReturn($res); } //详情 public function order_info() { $bill_id = I("post.id"); $data = array( "bill_id" => $bill_id ); $res = A("Api/Customer")->order_info($data); $this->ajaxReturn($res); } //审核商品信息确认 public function examineSerialOperation() { $data = I('post.'); $data['merchant_id'] = self::$merchant_id; $data['store_id'] = self::$store_id; $data['type'] = 2; $SellClass = new Sell(); $result = $SellClass->confirmSellGoods($data); $this->ajaxReturn($result); } /** *审核售后订单 * @param order_no 订单号 * @param type 1同意退款 2拒绝 * @param reason_id 申请原因id * @param reason 驳回原因 * @param deliver_state 0不需要客户退货 1需要客户退货 * goods_list 商品信息 */ public function examine() { $data = I("post."); $order_no = $data["order_no"]; $type = $data["type"]; $reason_id = $data["reason_id"]; $reason = $data["reason"]; $deliver_state = $data["deliver_state"]; $parameter = array( 'merchant_id' => self::$merchant_id, 'store_id' => self::$store_id, 'order_no' => $order_no, 'refund_status' => 1, 'type' => $type, 'reason_id' => $reason_id, 'reason' => $reason, 'deliver_state' => $deliver_state, 'goods_list'=>$data['goods_list'], 'platform_type'=>self::$merchant['platform_type'] ); if (C('IS_SET_REDIS')) { $ApiRedis = new \Addons\Api\RedisController(); $redis_key = "customer_" . $parameter['order_no']; if ($ApiRedis::$redis->exists($redis_key)) { $res['status'] = 0; $res['msg'] = "正在操作该订单,请勿重复操作"; $this->ajaxReturn($res); } $ApiRedis::$redis->setex($redis_key, 10, $parameter['order_no']); } $res = A("Api/Customer")->examineOperation($parameter); if (C('IS_SET_REDIS')) { $ApiRedis::$redis->delete($redis_key); } $this->ajaxReturn($res); } //出售商品记录 public function sellList() { $data = I('post.'); $SellClass = new Sell(); $result = $SellClass->sellList($data); $this->ajaxReturn($result); } /** * 商家收货 * order_no 订单号 * goods_list 商品信息 */ public function ReceivingGoods() { $order_no = I("post.order_no"); $parameter = array( 'merchant_id' => self::$merchant_id, 'store_id' => self::$store_id, 'order_no' => $order_no, 'refund_status' => 4, 'goods_list'=>I('post.goods_list'), 'platform_type'=>self::$merchant['platform_type'] ); if (C('IS_SET_REDIS')) { $ApiRedis = new \Addons\Api\RedisController(); $redis_key = "customer_" . $parameter['order_no']; if ($ApiRedis::$redis->exists($redis_key)) { $res['status'] = 0; $res['msg'] = "正在操作该订单,请勿重复操作"; $this->ajaxReturn($res); } $ApiRedis::$redis->setex($redis_key, 10, $parameter['order_no']); } $res = A("Api/Customer")->BusinessReceiving($parameter); if (C('IS_SET_REDIS')) { $ApiRedis::$redis->delete($redis_key); } $this->ajaxReturn($res); } }