where("user_id", $user['user_id'])->find(); session('user', $user); //覆盖session 中的 user $this->user = $user; $this->user_id = $user['user_id']; $this->assign('user', $user); //存储用户信息 $this->assign('user_id', $this->user_id); } else { header("location:" . U('User/login')); exit; } $order_status_coment = array( 'WAITPAY' => '待付款 ', //订单查询状态 待支付 'WAITSEND' => '待发货', //订单查询状态 待发货 'WAITRECEIVE' => '待收货', //订单查询状态 待收货 'WAITCCOMMENT' => '待评价', //订单查询状态 待评价 ); $this->assign('order_status_coment', $order_status_coment); } /** * 订单列表 * @return mixed */ public function order_list() { $type = input('type'); $is_shop = input('is_shop/d'); $order = new OrderModel(); $where_arr = [ 'user_id'=>$this->user_id, 'deleted'=>0,//删除的订单不列出来 'prom_type'=>['lt',5],//虚拟拼团订单不列出来 ]; if($is_shop){ $where_arr['shop_id'] = ['gt', 0]; } $count = $order->where($where_arr) ->where(function ($query) use ($type) { if ($type) { $query->where("1=1".C(strtoupper($type))); } }) ->count(); $Page = new Page($count, 10); $order_list = $order->where($where_arr) ->where(function ($query) use ($type) { if ($type) { $query->where("1=1".C(strtoupper($type))); } }) ->limit($Page->firstRow . ',' . $Page->listRows)->order("order_id DESC")->select(); $this->assign('order_list', $order_list); if ($_GET['is_ajax']) { return $this->fetch('ajax_order_list'); } return $this->fetch(); } //拼团订单列表 public function team_list(){ $type = input('type'); $Order = new OrderModel(); $order_where = ['prom_type' => 6, 'user_id' => $this->user_id, 'deleted' => 0,'pay_code'=>['<>','cod']];//拼团基础查询 $listRows = 10; switch (strval($type)) { case 'WAITPAY': //待支付订单 $order_where['pay_status'] = 0; $order_where['order_status'] = 0; break; case 'WAITTEAM': //待成团订单 $found_order_id = Db::name('team_found')->where(['user_id'=>$this->user_id,'status'=>1])->limit($listRows)->order('found_id desc')->getField('order_id',true);//团长待成团 $follow_order_id = Db::name('team_follow')->where(['follow_user_id'=>$this->user_id,'status'=>1])->limit($listRows)->order('follow_id desc')->getField('order_id',true);//团员待成团 $team_order_id = array_merge($found_order_id,$follow_order_id); if (count($team_order_id) > 0) { $order_where['order_id'] = ['in', $team_order_id]; }else{ $order_where['order_id'] = 0; } break; case 'WAITSEND': //待发货 $order_where['pay_status'] = 1; $order_where['shipping_status'] = ['<>',1]; $order_where['order_status'] = ['elt',1]; $found_order_id = Db::name('team_found')->where(['user_id'=>$this->user_id,'status'=>2])->limit($listRows)->order('found_id desc')->getField('order_id',true);//团长待成团 $follow_order_id = Db::name('team_follow')->where(['follow_user_id'=>$this->user_id,'status'=>2])->limit($listRows)->order('follow_id desc')->getField('order_id',true);//团员待成团 $team_order_id = array_merge($found_order_id,$follow_order_id); if (count($team_order_id) > 0) { $order_where['order_id'] = ['in', $team_order_id]; }else{ $order_where['order_id'] = 0; } break; case 'WAITRECEIVE': //待收货 $order_where['shipping_status'] = 1; $order_where['order_status'] = 1; break; case 'WAITCCOMMENT': //已完成 $order_where['order_status'] = 2; break; } $request = Request::instance(); $order_count = $Order->where($order_where)->count(); $page = new Page($order_count, $listRows); $order_list = $Order->with('orderGoods')->where($order_where)->limit($page->firstRow . ',' . $page->listRows)->order('order_id desc')->select(); $this->assign('order_list',$order_list); if ($request->isAjax()) { return $this->fetch('ajax_team_list'); // $this->ajaxReturn(['status'=>1,'msg'=>'获取成功','result'=>$order_list]); } return $this->fetch(); } public function team_detail(){ $order_id = input('order_id'); $Order = new \app\common\model\Order(); $TeamFound = new TeamFound(); $order_where = ['prom_type' => 6, 'order_id' => $order_id, 'deleted' => 0]; $order = $Order->with('orderGoods')->where($order_where)->find(); if (empty($order)) { $this->error('该订单记录不存在或已被删除'); } $orderTeamFound = $order->teamFound; if ($orderTeamFound) { //团长的单 $this->assign('orderTeamFound', $orderTeamFound);//团长 } else { //去找团长 $teamFound = $TeamFound::get(['found_id' => $order->teamFollow['found_id']]); $this->assign('orderTeamFound', $teamFound);//团长 } $this->assign('order', $order); return $this->fetch(); } /** * 订单详情 * @return mixed */ public function order_detail() { $id = input('id/d', 0); $Order = new OrderModel(); $order = $Order::get(['order_id' => $id, 'user_id' => $this->user_id]); if (!$order) { $this->error('没有获取到订单信息'); } //获取订单 if ($order['prom_type'] == 5) { //虚拟订单 $this->redirect(U('virtual/virtual_order', ['order_id' => $id])); } $this->assign('order', $order); if($order['receive_btn']){ //待收货详情 return $this->fetch('wait_receive_detail'); } return $this->fetch(); } /** * 物流信息 * @return mixed */ public function express() { $order_id = I('get.order_id/d', 0); $order_goods = M('order_goods')->where("order_id", $order_id)->select(); if(empty($order_goods) || empty($order_id)){ $this->error('没有获取到订单信息'); } $delivery = M('delivery_doc')->where("order_id", $order_id)->find(); $this->assign('order_goods', $order_goods); $this->assign('delivery', $delivery); return $this->fetch(); } /** * 取消订单 */ public function cancel_order() { $id = I('get.id/d'); //检查是否有积分,余额支付 $logic = new OrderLogic(); $data = $logic->cancel_order($this->user_id, $id); $this->ajaxReturn($data); } /** * 取消详情 * @return \think\mixed */ public function cancel_order_info(){ $order_id = I('order_id/d',0); $Orders = new OrderModel(); $order = $Orders->where(array('order_id'=>$order_id,'order_status'=>3,'pay_status'=>['gt',0]))->find(); if(!$order){ $this->error('非法操作!'); } $this->assign('order', $order); return $this->fetch(); } /** * 确定收货成功 */ public function order_confirm() { $id = I('id/d', 0); $data = confirm_order($id, $this->user_id); if(request()->isAjax()){ $this->ajaxReturn($data); } if ($data['status'] != 1) { $this->error($data['msg'],U('Mobile/Order/order_list')); } else { $model = new UsersLogic(); $order_goods = $model->get_order_goods($id); $this->assign('order_goods', $order_goods); return $this->fetch(); exit; } } //订单支付后取消订单 public function refund_order() { $order_id = I('get.order_id/d'); $order = M('order') ->field('order_id,pay_code,pay_name,user_money,integral_money,coupon_price,order_amount,consignee,mobile,prom_type') ->where(['order_id' => $order_id, 'user_id' => $this->user_id]) ->find(); $this->assign('user', $this->user); $this->assign('order', $order); return $this->fetch(); } //申请取消订单 public function record_refund_order() { $order_id = input('post.order_id', 0); $user_note = input('post.user_note', ''); $consignee = input('post.consignee', ''); $mobile = input('post.mobile', ''); $logic = new \app\common\logic\OrderLogic; $return = $logic->recordRefundOrder($this->user_id, $order_id, $user_note, $consignee, $mobile); $this->ajaxReturn($return); } /** * 申请退货 */ public function return_goods() { $rec_id = I('rec_id',0); $return_goods = Db::name('return_goods')->where(array('rec_id'=>$rec_id))->find(); if(!empty($return_goods)) { $this->error('已经提交过退货申请!',U('Order/return_goods_info',array('id'=>$return_goods['id']))); } $order_goods = Db::name('order_goods')->where(array('rec_id'=>$rec_id))->find(); $order = Db::name('order')->where(array('order_id'=>$order_goods['order_id'],'user_id'=>$this->user_id))->find(); $auto_service_date = tpCache('shopping.auto_service_date'); //申请售后时间段 $confirm_time = strtotime("-$auto_service_date day"); if ($order['add_time'] < $confirm_time) { return $this->fetch('return_error'); } if(empty($order))$this->error('非法操作'); if(IS_POST) { $model = new OrderLogic(); $res = $model->addReturnGoods($rec_id,$order); //申请售后 if($res['status']==1)$this->success($res['msg'],U('Order/return_goods_list')); $this->error($res['msg']); } $region_id[] = tpCache('shop_info.province'); $region_id[] = tpCache('shop_info.city'); $region_id[] = tpCache('shop_info.district'); $region_id[] = 0; $return_address = Db::name('region')->where("id in (".implode(',', $region_id).")")->getField('id,name'); $this->assign('return_address',implode(',',$return_address)); $this->assign('return_type', C('RETURN_TYPE')); $this->assign('goods', $order_goods); $this->assign('order',$order); return $this->fetch(); } /** * 退换货列表 */ public function return_goods_list() { //退换货商品信息 $count = Db::name('return_goods')->where("user_id", $this->user_id)->count(); $pagesize = C('PAGESIZE'); $page = new Page($count, $pagesize); $list = Db::name('return_goods')->alias('rg') ->field('rg.*,og.goods_name,og.spec_key_name') ->join('order_goods og','rg.rec_id=og.rec_id','LEFT') ->where(['rg.user_id'=>$this->user_id]) ->order("rg.id desc") ->limit("{$page->firstRow},{$page->listRows}") ->select(); $state = C('REFUND_STATUS'); $this->assign('list', $list); $this->assign('state',$state); $this->assign('page', $page->show());// 赋值分页输出 if (I('is_ajax')) { return $this->fetch('ajax_return_goods_list'); exit; } return $this->fetch(); } /** * 退货详情 */ public function return_goods_info() { $id = I('id/d', 0); $return_goods = M('return_goods')->where("id = $id")->find(); if(empty($return_goods)){ $this->error('参数错误'); } $return_goods['seller_delivery'] = unserialize($return_goods['seller_delivery']); //订单的物流信息,服务类型为换货会显示 $return_goods['delivery'] = unserialize($return_goods['delivery']); //订单的物流信息,服务类型为换货会显示 if ($return_goods['imgs']) $return_goods['imgs'] = explode(',', $return_goods['imgs']); $goods = M('order_goods')->where("rec_id = {$return_goods['rec_id']} ")->find(); $this->assign('state',C('REFUND_STATUS')); $this->assign('return_type', C('RETURN_TYPE')); $this->assign('goods', $goods); $this->assign('return_goods', $return_goods); return $this->fetch(); } /** * 修改退货状态,发货 */ public function checkReturnInfo() { $data = I('post.'); $data['delivery'] = serialize($data['delivery']); $data['status'] = 2; $res = M('return_goods')->where(['id'=>$data['id'],'user_id'=>$this->user_id])->save($data); if($res !== false){ $this->ajaxReturn(['status'=>1,'msg'=>'发货提交成功','url'=>U('Mobile/Order/return_goods_info',['id'=>$data['id']])]); }else{ $this->ajaxReturn(['status'=>-1,'msg'=>'提交失败','url'=>'']); } } public function return_goods_refund() { $order_sn = I('order_sn'); $where = array('user_id'=>$this->user_id); if($order_sn){ $where['order_sn'] = $order_sn; } $where['status'] = 5; $count = M('return_goods')->where($where)->count(); $page = new Page($count,10); $list = M('return_goods')->where($where)->order("id desc")->limit($page->firstRow, $page->listRows)->select(); $goods_id_arr = get_arr_column($list, 'goods_id'); if(!empty($goods_id_arr)) $goodsList = M('goods')->where("goods_id in (". implode(',',$goods_id_arr).")")->getField('goods_id,goods_name'); $this->assign('goodsList', $goodsList); $state = C('REFUND_STATUS'); $this->assign('list', $list); $this->assign('state',$state); $this->assign('page', $page->show());// 赋值分页输出 return $this->fetch(); } /** * 取消售后服务 * @author lxl * @time 2017-4-19 */ public function return_goods_cancel(){ $id = I('id',0); if(empty($id))$this->ajaxReturn(['status'=>-1,'msg'=>'参数错误']); $return_goods = M('return_goods')->where(array('id'=>$id,'user_id'=>$this->user_id))->find(); if(empty($return_goods)) $this->ajaxReturn(['status'=>-1,'msg'=>'参数错误']); $res= M('return_goods')->where(array('id'=>$id))->save(array('status'=>-2,'canceltime'=>time())); if ($res !== false){ $this->ajaxReturn(['status'=>1,'msg'=>'取消成功']); }else{ $this->ajaxReturn(['status'=>-1,'msg'=>'取消失败']); } } /** * 换货商品确认收货 * @author lxl * @time 17-4-25 * */ public function receiveConfirm(){ $return_id=I('return_id/d'); $return_info=M('return_goods')->field('order_id,order_sn,goods_id,spec_key')->where('id',$return_id)->find(); //查找退换货商品信息 $update = M('return_goods')->where('id',$return_id)->save(['status'=>3]); //要更新状态为已完成 if($update) { M('order_goods')->where(array( 'order_id' => $return_info['order_id'], 'goods_id' => $return_info['goods_id'], 'spec_key' => $return_info['spec_key']))->save(['is_send' => 2]); //订单商品改为已换货 $this->success("操作成功", U("Order/return_goods_info", array('id' => $return_id))); } $this->error("操作失败"); } /** * 评论晒单 * @return mixed */ public function comment() { $user_id = $this->user_id; $status = I('get.status'); $logic = new CommentLogic; $data = $logic->getComment($user_id, $status); //获取评论列表 $this->assign('page', $data['page']);// 赋值分页输出 $this->assign('comment_page', $data['page']); $this->assign('comment_list', $data['result']); $this->assign('active', 'comment'); if(I('is_ajax')){ return $this->fetch('ajax_comment_list'); } return $this->fetch(); } /** *添加评论 */ public function add_comment() { if (IS_POST) { // 晒图片 $files = request()->file('comment_img_file'); $save_url = UPLOAD_PATH.'comment/' . date('Y', time()) . '/' . date('m-d', time()); if($files) { foreach ($files as $file) { // 移动到框架应用根目录/public/uploads/ 目录下 $image_upload_limit_size = config('image_upload_limit_size'); $info = $file->rule('uniqid')->validate(['size' => $image_upload_limit_size, 'ext' => 'jpg,png,gif,jpeg'])->move($save_url); if ($info) { // 成功上传后 获取上传信息 // 输出 jpg $comment_img[] = '/' . $save_url . '/' . $info->getFilename(); } else { // 上传失败获取错误信息 $this->ajaxReturn(['status' =>-1,'msg' =>$file->getError()]); } } } if (!empty($comment_img)) { $add['img'] = serialize($comment_img); } $user_info = session('user'); $logic = new UsersLogic(); $add['rec_id'] = I('rec_id/d'); $add['goods_id'] = I('goods_id/d'); $add['email'] = $user_info['email']; $hide_username = I('hide_username'); $add['username'] = $user_info['nickname']; $add['is_anonymous'] = $hide_username; //是否匿名评价:0不是\1是 $add['order_id'] = I('order_id/d'); $add['service_rank'] = I('service_rank'); $add['deliver_rank'] = I('deliver_rank'); $add['goods_rank'] = I('goods_rank'); $add['is_show'] = 1; //默认显示 $add['content'] = I('content'); $add['add_time'] = time(); $add['ip_address'] = request()->ip(); $add['user_id'] = $this->user_id; //添加评论 $row = $logic->add_comment($add); if ($row['status'] == 1) { $this->ajaxReturn(['status' => 1,'msg' =>'评论成功','url' =>U('/Mobile/Order/comment',['status'=>1])]); } else { $this->ajaxReturn(['status' => -1,'msg' =>$row['msg']]); } } $rec_id = I('rec_id/d'); $order_goods = M('order_goods')->where("rec_id", $rec_id)->find(); $order_info = Db::name('order')->where("order_id", $order_goods['order_id'])->find(); $this->assign('order_goods', $order_goods); $this->assign('rec_id', $rec_id); $this->assign('order_info', $order_info); return $this->fetch(); } /** * 待收货列表 */ public function wait_receive() { $where = ' user_id=' . $this->user_id; //条件搜索 if (I('type') == 'WAITRECEIVE') { $where .= C(strtoupper(I('type'))); } $count = M('order')->where($where)->count(); $pagesize = C('PAGESIZE'); $Page = new Page($count, $pagesize); $show = $Page->show(); $order_str = "order_id DESC"; $order = new OrderModel(); $order_list = $order->order($order_str)->where($where)->limit($Page->firstRow . ',' . $Page->listRows)->select(); $this->assign('page', $show); $this->assign('order_list', $order_list); if ($_GET['is_ajax']) { return $this->fetch('ajax_wait_receive'); exit; } return $this->fetch(); } /** * 评论详情 * @return mixed */ public function comment_info(){ $commentLogic = new \app\common\logic\CommentLogic; $comment_id = I('comment_id/d'); $res = $commentLogic->getCommentInfo($comment_id); if(empty($res)){ $this->error('参数错误!!'); } if(!empty($res['comment_info']['img'])) $res['comment_info']['img'] = unserialize($res['comment_info']['img']); $user = get_user_info($res['comment_info']['user_id']); $res['comment_info']['nickname'] = $user['nickname']; $res['comment_info']['head_pic'] = $user['head_pic']; $this->assign('comment_info',$res['comment_info']); $this->assign('comment_id',$res['comment_info']['comment_id']); $this->assign('reply',$res['reply']); $this->assign('user',$this->user); return $this->fetch(); } /** * 评论别的用户评论 */ public function replyComment(){ $data=I('post.'); $data['reply_time'] = time(); $data['deleted'] = 0; $data['head_pic'] = Db::name('users')->where(['user_id'=>$this->user_id])->value('head_pic'); $data['user_id'] = $this->user_id; $return = Db::name('reply')->add($data); if($return){ Db::name('comment')->where(['comment_id'=>$data['comment_id']])->setInc('reply_num'); $data['reply_time'] = date('Y-m-d H:m',$data['reply_time']); $this->ajaxReturn(['status'=>1,'msg'=>'评论成功!','result'=>$data]); exit; } else { $this->ajaxReturn(['status'=>0,'msg'=>"评论失败"]); } } /** * 点赞 */ public function ajaxZan() { $comment_id = I('post.comment_id/d'); $user_id = $this->user_id; $comment_info = M('comment')->where(array('comment_id' => $comment_id))->find(); //获取点赞用户ID $comment_user_id_array = explode(',', $comment_info['zan_userid']); if (in_array($user_id, $comment_user_id_array)) { //判断用户有没点赞过 $result = ['status' => 0, 'msg' => '您已经点过赞了~', 'result' => '']; } else { array_push($comment_user_id_array, $user_id); //加入用户ID $comment_user_id_string = implode(',', $comment_user_id_array); $comment_data['zan_num'] = $comment_info['zan_num'] + 1; //点赞数量加1 $comment_data['zan_userid'] = $comment_user_id_string; M('comment')->where(array('comment_id' => $comment_id))->save($comment_data); $result = ['status' => 1, 'msg' => '点赞成功~', 'result' => '']; } exit(json_encode($result)); } }