From 474c7f1675fbd86eba202a65d169bd5fb5262dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=80=E5=B3=B0?= <1feng.0595@gmail.com> Date: Wed, 29 Nov 2017 00:28:37 +0800 Subject: [PATCH] order list --- app/Http/Controllers/Api/OrderController.php | 4 +- .../Controllers/Weixin/CartController.php | 10 +- .../Controllers/Weixin/OrderController.php | 4 +- app/Http/Model/Cart.php | 4 - app/Http/Model/Goods.php | 4 +- app/Http/Model/Order.php | 209 +++++------------- app/Http/Model/OrderGoods.php | 23 ++ .../views/weixin/cart/cartCheckout.blade.php | 14 +- .../views/weixin/order/orderList.blade.php | 65 ++++++ routes/web.php | 1 + 10 files changed, 169 insertions(+), 169 deletions(-) create mode 100644 app/Http/Model/OrderGoods.php create mode 100644 resources/views/weixin/order/orderList.blade.php diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php index e985fb6..75f283c 100644 --- a/app/Http/Controllers/Api/OrderController.php +++ b/app/Http/Controllers/Api/OrderController.php @@ -44,11 +44,11 @@ class OrderController extends CommonController { //参数 $data['default_address_id'] = $request->input('default_address_id',''); - $data['payid'] = $request->input('payid',''); + //$data['payid'] = $request->input('payid',''); $data['user_bonus_id'] = $request->input('user_bonus_id',''); $data['shipping_costs'] = $request->input('shipping_costs',''); $data['message'] = $request->input('message',''); - $data['place_type'] = $request->input('place_type',''); + $data['place_type'] = $request->input('place_type',2); //订单来源,1pc,2微信,3app $data['user_id'] = Token::$uid; //获取商品列表 diff --git a/app/Http/Controllers/Weixin/CartController.php b/app/Http/Controllers/Weixin/CartController.php index c9bbfcb..82c758a 100644 --- a/app/Http/Controllers/Weixin/CartController.php +++ b/app/Http/Controllers/Weixin/CartController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Weixin; use App\Http\Controllers\Weixin\CommonController; use Illuminate\Http\Request; use App\Common\ReturnData; +use App\Common\ReturnCode; class CartController extends CommonController { @@ -82,6 +83,7 @@ class CartController extends CommonController $url = env('APP_API_URL')."/cart_checkout_goods_list"; $res = curl_request($url,$postdata,'GET'); $data['checkout_goods'] = $res['data']; + if(empty($data['checkout_goods']['list'])){$this->error_jump(ReturnCode::NO_FOUND);} //判断余额是否足够 $is_balance_enough = 1; //足够 @@ -105,20 +107,20 @@ class CartController extends CommonController { $cartids = $request->input('cartids',''); //购物车商品id,8_9 $default_address_id = $request->input('default_address_id',''); //收货地址id - $payid = $request->input('payid',''); //支付方式:1余额支付,2微信,3支付宝 + //$payid = $request->input('payid',''); //支付方式:1余额支付,2微信,3支付宝 $user_bonus_id = $request->input('user_bonus_id',0); //优惠券id,0没有优惠券 $shipping_costs = $request->input('shipping_costs',''); //运费 $message = $request->input('message',''); //买家留言 if($default_address_id==''){$this->error_jump('请选择收货地址');} - if($payid==''){$this->error_jump('请选择支付方式');} + //if($payid==''){$this->error_jump('请选择支付方式');} if($cartids==''){$this->error_jump(ReturnData::PARAMS_ERROR);} //订单提交 $postdata = array( 'cartids' => $cartids, 'default_address_id' => $default_address_id, - 'payid' => $payid, + //'payid' => $payid, 'user_bonus_id' => $user_bonus_id, 'shipping_costs' => $shipping_costs, 'message' => $message, @@ -129,7 +131,7 @@ class CartController extends CommonController if($res['code'] == ReturnData::SUCCESS) { - header("Location: ".route('weixin_order_wxpay',array('order_id'=>$res['data']))); + header("Location: ".route('weixin_order_pay',array('id'=>$res['data']))); exit; } else diff --git a/app/Http/Controllers/Weixin/OrderController.php b/app/Http/Controllers/Weixin/OrderController.php index 8584a23..f340c6e 100644 --- a/app/Http/Controllers/Weixin/OrderController.php +++ b/app/Http/Controllers/Weixin/OrderController.php @@ -81,7 +81,7 @@ class OrderController extends CommonController //判断余额是否足够 $is_balance_enough = 1; //足够 - if($data['order_detail']['total_price']>$data['user_info']['money']){$is_balance_enough = 0;} + if($data['order_detail']['order_amount']>$data['user_info']['money']){$is_balance_enough = 0;} $data['is_balance_enough'] = $is_balance_enough; return view('weixin.order.pay', $data); @@ -101,7 +101,7 @@ class OrderController extends CommonController if($payment_id == 1) //余额支付 { - $url = ''; + $url = route('weixin_order_yuepay',array('order_id'=>$order_id)); } elseif($payment_id == 2) //微信支付 { diff --git a/app/Http/Model/Cart.php b/app/Http/Model/Cart.php index 586488c..1671e59 100644 --- a/app/Http/Model/Cart.php +++ b/app/Http/Model/Cart.php @@ -224,10 +224,6 @@ class Cart extends BaseModel $total_goods = $total_goods + $cartList[$k]->goods_number; } } - else - { - return false; - } $res['list'] = $cartList; $res['total_price'] = $total_price; diff --git a/app/Http/Model/Goods.php b/app/Http/Model/Goods.php index 2b5b339..de853a0 100644 --- a/app/Http/Model/Goods.php +++ b/app/Http/Model/Goods.php @@ -270,12 +270,12 @@ class Goods extends BaseModel if(isset($type)) { //增加库存 - DB::table('goods')->where(array('id'=>$goods_id))->decrement('goods_number', $goods_number); + DB::table('goods')->where(array('id'=>$goods_id))->increment('goods_number', $goods_number); } else { //减少库存 - DB::table('goods')->where(array('id'=>$goods_id))->increment('goods_number', $goods_number); + DB::table('goods')->where(array('id'=>$goods_id))->decrement('goods_number', $goods_number); } } } \ No newline at end of file diff --git a/app/Http/Model/Order.php b/app/Http/Model/Order.php index 8636914..466a8c2 100644 --- a/app/Http/Model/Order.php +++ b/app/Http/Model/Order.php @@ -16,45 +16,69 @@ class Order extends BaseModel public $timestamps = false; - //获取列表 - public static function getList(array $param) + //获取订单列表 + public static function getList(array $param) { - extract($param); //参数:limit,offset + extract($param); + + $limit = isset($limit) ? $limit : 10; + $offset = isset($offset) ? $offset : 0; + + $where['user_id'] = $user_id; + $where['is_delete'] = 0; + + //0或者不传表示全部,1待付款,2待发货,3待收货,4待评价(确认收货,交易完成),5退款/售后 + if($status == 1) + { + $where['order_status'] = 0; + $where['pay_status'] = 0; + } + elseif($status == 2) + { + $where['order_status'] = 0; + $where['shipping_status'] = 0; + $where['pay_status'] = 1; + } + elseif($status == 3) + { + $where['order_status'] = 0; + $where['refund_status'] = 0; + $where['shipping_status'] = 1; + $where['pay_status'] = 1; + } + elseif($status == 4) + { + $where['order_status'] = 3; + $where['refund_status'] = 0; + $where['shipping_status'] = 2; + $where['is_comment'] = 0; + } + elseif($status == 5) + { + $where['order_status'] = 3; + $where['refund_status'] = 1; + } + + $model = self::where($where); - $model = self::join('goods', 'goods.id', '=', 'cart.goods_id') - ->where('cart.user_id', $user_id) - ->where('goods.status', Goods::STATUS) - ->select('cart.*','goods.id as goods_id','goods.title','goods.sn','goods.price as goods_price','goods.market_price','goods.litpic','goods.goods_number as stock','goods.promote_start_date','goods.promote_price','goods.promote_end_date'); - $res['count'] = $model->count(); $res['list'] = array(); - if($res['count']>0) + if($res['count']>0) { - $res['list'] = $model->get(); + $res['list'] = $model->skip($offset)->take($limit)->get(); - foreach ($res['list'] as $k => $v) + if($res['list']) { - $res['list'][$k]->is_promote = 0; - if(Goods::bargain_price($v->goods_price,$v->promote_start_date,$v->promote_end_date) > 0){$res['list'][$k]->is_promote = 1;} - - //订货数量大于0 - if ($v->goods_number > 0) + foreach($res['list'] as $k=>$v) { - $res['list'][$k]->final_price = Goods::get_final_price($v->goods_id); //商品最终价格 - $res['list'][$k]->goods_detail_url = route('weixin_goods_detail',array('id'=>$v->goods_id)); - - //更新购物车中的商品数量 - //self::where('id', $v->id)->update(array('price' => $goods_price)); + $order_goods = OrderGoods::where(array('order_id'=>$v['id']))->get(); + $res[$k]['goods_list'] = $order_goods; } } } - else - { - return false; - } - return $res; + return ReturnData::create(ReturnData::SUCCESS,$res); } public static function getOne($where) @@ -64,14 +88,16 @@ class Order extends BaseModel return $goods; } + //生成订单 public static function add(array $param) { extract($param); //获取订单商品列表 - $order_goods = Cart::cartCheckoutGoodsList(array('ids'=>$cartids,'user_id'=>$user_id)); - if(!$order_goods){return ReturnData::create(ReturnData::SYSTEM_FAIL,null,'订单商品不存在');} - return $order_goods; + $cartCheckoutGoods = Cart::cartCheckoutGoodsList(array('ids'=>$cartids,'user_id'=>$user_id)); + $order_goods = $cartCheckoutGoods['data']; + if(!$order_goods['list']){return ReturnData::create(ReturnData::SYSTEM_FAIL,null,'订单商品不存在');} + //获取收货地址 $user_address = UserAddress::getOne($user_id,$default_address_id); if(!$user_address){return ReturnData::create(ReturnData::SYSTEM_FAIL,null,'收货地址不存在');} @@ -101,7 +127,7 @@ class Order extends BaseModel 'order_amount' => $order_amount, //应付金额=商品总价+运费-优惠(积分、红包) 'discount' => $discount, //优惠金额 'name' => $user_address['name'], - 'country' => $user_address['country'], + //'country' => $user_address['country'], 'province' => $user_address['province'], 'city' => $user_address['city'], 'district' => $user_address['district'], @@ -187,131 +213,18 @@ class Order extends BaseModel return true; } - /** - * 添加商品到购物车 - * - * @access public - * @param integer $goods_id 商品编号 - * @param integer $num 商品数量 - * @param json $property 规格值对应的id json数组 - * @return boolean - */ - public static function cartAdd(array $attributes) - { - extract($attributes); - - //获取商品信息 - $goods = Goods::where(['id' => $goods_id, 'status' => Goods::STATUS])->first(); - - if (!$goods) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'商品不存在'); - } - - //判断库存 是否足够 - if($goods['goods_number']<$goods_number) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'库存不足'); - } - - //判断购物车商品数 - if(Cart::where(['user_id'=>$user_id])->count() >= 20) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'购物车商品最多20件'); - } - - //查看是否已经有购物车插入记录 - $where = array( - 'user_id' => $user_id, - 'goods_id' => $goods_id - ); - - $cart = Cart::where($where)->first(); - - if($cart) - { - //更新购物车 - $updateArr = array( - 'goods_number' => $goods_number, - 'add_time' => time(), - ); - - self::where(array('id'=>$cart->id))->update($updateArr); - - $cart_id = $cart->id; - } - else - { - //添加购物车 - $cartInsert = array( - 'user_id' => $user_id, - 'goods_id' => $goods_id, - 'goods_number' => $goods_number, - 'add_time' => time(), - ); - - $cart_id = self::insertGetId($cartInsert); - } - - return ReturnData::create(ReturnData::SUCCESS,$cart_id,'购物车添加成功'); - } - - /** - * 清空购物车 - * - * @param int $type 类型:默认普通商品 - */ - public static function clearCart($user_id) - { - self::where('user_id',$user_id)->delete(); - - return true; - } - - //购物车商品总数量 - public static function TotalGoodsCount($user_id) - { - return self::where('user_id',$user_id)->sum('goods_number'); - } - - //购物车结算商品列表 - public static function cartCheckoutGoodsList(array $param) + //获取未支付的订单详情 + public static function getUnpaidOrder(array $param) { extract($param); - $cartIds = explode("_",$ids); + $res = self::where(array('id'=>$order_id,'order_status'=>0,'pay_status'=>0,'user_id'=>$user_id))->select('id', 'order_sn', 'user_id', 'add_time', 'order_amount')->first(); - // 获取购物车列表 - $cartList = self::where(array('user_id'=>$user_id))->whereIn('id', $cartIds)->get(); - $total_price = 0; //商品总金额 - $total_goods = 0; //商品总数量 - - if(!empty($cartList)) + if(!$res) { - $resultList = array(); - $checkArr = array(); - - foreach($cartList as $k=>$v) - { - $goods = Goods::where(array('id'=>$v['goods_id']))->first(); - - $cartList[$k]->is_promote = 0; - if(Goods::bargain_price($goods->price,$goods->promote_start_date,$goods->promote_end_date) > 0){$cartList[$k]->is_promote = 1;} - - $cartList[$k]->final_price = Goods::get_final_price($v['goods_id']); //商品最终价格 - $cartList[$k]->goods_detail_url = route('weixin_goods_detail',array('id'=>$v['goods_id'])); - $cartList[$k]->title = $goods->title; - $cartList[$k]->litpic = $goods->litpic; - - $total_price = $total_price + $cartList[$k]->final_price*$cartList[$k]->goods_number; - $total_goods = $total_goods + $cartList[$k]->goods_number; - } + return ReturnData::create(ReturnData::SYSTEM_FAIL,null,''); } - $res['list'] = $cartList; - $res['total_price'] = $total_price; - $res['total_goods'] = $total_goods; - return ReturnData::create(ReturnData::SUCCESS,$res); } } \ No newline at end of file diff --git a/app/Http/Model/OrderGoods.php b/app/Http/Model/OrderGoods.php new file mode 100644 index 0000000..c46f6d7 --- /dev/null +++ b/app/Http/Model/OrderGoods.php @@ -0,0 +1,23 @@ +