Browse Source

order list

master
林一峰 7 years ago
parent
commit
474c7f1675
  1. 4
      app/Http/Controllers/Api/OrderController.php
  2. 10
      app/Http/Controllers/Weixin/CartController.php
  3. 4
      app/Http/Controllers/Weixin/OrderController.php
  4. 4
      app/Http/Model/Cart.php
  5. 4
      app/Http/Model/Goods.php
  6. 203
      app/Http/Model/Order.php
  7. 23
      app/Http/Model/OrderGoods.php
  8. 14
      resources/views/weixin/cart/cartCheckout.blade.php
  9. 65
      resources/views/weixin/order/orderList.blade.php
  10. 1
      routes/web.php

4
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;
//获取商品列表

10
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

4
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) //微信支付
{

4
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;

4
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);
}
}
}

203
app/Http/Model/Order.php

@ -16,45 +16,69 @@ class Order extends BaseModel
public $timestamps = false;
//获取列表
//获取订单列表
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::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');
$model = self::where($where);
$res['count'] = $model->count();
$res['list'] = array();
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,130 +213,17 @@ 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);
// 获取购物车列表
$cartList = self::where(array('user_id'=>$user_id))->whereIn('id', $cartIds)->get();
$total_price = 0; //商品总金额
$total_goods = 0; //商品总数量
$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();
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);
}

23
app/Http/Model/OrderGoods.php

@ -0,0 +1,23 @@
<?php
namespace App\Http\Model;
use DB;
class OrderGoods extends BaseModel
{
//产品模型
/**
* 关联到模型的数据表
*
* @var string
*/
protected $table = 'order_goods';
/**
* 表明模型是否应该被打上时间戳
* 默认情况下,Eloquent 期望 created_at 和updated_at 已经存在于数据表中,如果你不想要这些 Laravel 自动管理的数据列,在模型类中设置 $timestamps 属性为 false
*
* @var bool
*/
public $timestamps = false;
}

14
resources/views/weixin/cart/cartCheckout.blade.php

@ -60,7 +60,7 @@ function selectaddress()
<!-- 订单商品列表-end -->
<div class="floor">
<ul class="fui-list mt10">
<a href="javascript:update_pay_mode_layer();"><li>
<!-- <a href="javascript:update_pay_mode_layer();"><li>
<div class="ui-list-info">
<h4 class="ui-nowrap">支付方式</h4>
<div class="ui-txt-info"><span id="paytext">微信支付</span> &nbsp;</div>
@ -82,7 +82,7 @@ function selectaddress()
$("#paytext").html(name);
$("#payid").val(id);
}
</script>
</script> -->
<a href="javascript:select_bonus_layer();"><li>
<div class="ui-list-info">
<h4 class="ui-nowrap">优惠券</h4>
@ -122,18 +122,18 @@ function selectaddress()
function submit_form()
{
payid = $("#payid").val();
default_address_id = $("#default_address_id").val();
//payid = $("#payid").val();
//if(payid==''){alert("请选择支付方式");}
if(payid==''){alert("请选择支付方式");}
default_address_id = $("#default_address_id").val();
if(default_address_id==''){alert("请选择收货地址");}
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字
if (!re.test(payid))
/* if (!re.test(payid))
{
alert("支付方式格式不正确");
return false;
}
} */
if (!re.test(default_address_id))
{

65
resources/views/weixin/order/orderList.blade.php

@ -0,0 +1,65 @@
<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>我的订单</title><meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport">
<link href="<?php echo env('APP_URL'); ?>/css/weixin/style.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="<?php echo env('APP_URL'); ?>/js/jquery.min.js"></script><script type="text/javascript" src="<?php echo env('APP_URL'); ?>/js/weixin/mobile.js"></script>
<meta name="keywords" content="关键词"><meta name="description" content="描述"></head><body>
<div class="classreturn loginsignup">
<div class="ds-in-bl return"><a href="javascript:history.back(-1);"><img src="<?php echo env('APP_URL'); ?>/images/weixin/return.png" alt="返回"></a></div>
<div class="ds-in-bl tit center"><span>我的订单</span></div>
<div class="ds-in-bl nav_menu"><a href="javascript:void(0);"><img src="<?php echo env('APP_URL'); ?>/images/weixin/class1.png" alt="菜单"></a></div>
</div>
@include('weixin.common.headerNav')
<div class="floor">
<form action="<?php echo route('weixin_order_dopay'); ?>" method="POST" id="goto_pay">
<input type="hidden" name="order_id" value="<?php echo $order_id; ?>">
<div class="step_main">
<div class="clue_on"><p>您的订单已成功生成,选择您想用的支付方式进行支付。</p></div>
<div class="order_info">
<p>订单编号:<span><?php echo $order_id; ?></span></p>
<p>应付金额:<span>¥<?php echo $order_detail['order_amount']; ?></span></p>
</div>
<div class="payment mt10">
<h3>选择支付方式付款</h3>
<dl class="defray">
<?php if($is_balance_enough){ ?>
<dd>
<p class="radio"><input id="payment_yuer" name="payment_id" value="1" type="radio"></p>
<label for="payment_yuer"><p class="logo"><img src="<?php echo env('APP_URL'); ?>/images/weixin/yuepay_icon.png"></p>
<p class="explain">余额支付</p></label>
</dd>
<?php } ?>
<dd>
<p class="radio"><input id="payment_wxpay" name="payment_id" value="2" type="radio" checked="checked"></p>
<label for="payment_wxpay"><p class="logo"><img src="<?php echo env('APP_URL'); ?>/images/weixin/wxpay_icon.png"></p>
<p class="explain">微信支付</p></label>
</dd>
</dl>
<div class="cl"></div>
</div>
<a href="javascript:$('#goto_pay').submit();" class="bottoma" style="margin-top:10px;margin-bottom:15px;background-color:#1aad19;border:1px solid #179e16;color:white;border-radius:2px;text-align:center;">确认支付</a>
<div class="remark" style="color:#666;">
您可以在 <a href="<?php echo route('weixin_order_list'); ?>">我的订单</a> 中查看或取消您的订单。<br>
如果您现在不方便支付,可以随后到 <a href="<?php echo route('weixin_order_list'); ?>">我的订单</a>完成支付,我们会在48小时内为您保留未支付的订单。
</div>
</div>
</form>
</div>
<style>
.step_main{padding:10px;}
.step_main .clue_on{color:#666;}
.step_main .order_info{color:#999;}
.step_main .order_info span{color:#f34;}
.step_main h4,.step_main h3{padding:5px 0;font-weight:normal;color:#333;}
.defray{margin-top:5px;}
.defray dd{min-height:36px;line-height:36px;border-top:1px solid #eee;padding:6px 0;clear:both;}
.defray dd p.logo img{float:left;height:36px;}
.defray dd p.explain{float:left;color:#787878;margin-left:10px;}
.radio{float:left;width:20px;}
.bottoma{display:block;font-size:18px;padding:10px;color:white;background-color:#f23030;text-align:center;}
</style>
@include('weixin.common.footer')
</body></html>

1
routes/web.php

@ -104,6 +104,7 @@ Route::group(['prefix' => 'weixin', 'namespace' => 'Weixin', 'middleware' => ['w
Route::post('/order_dopay', 'OrderController@dopay')->name('weixin_order_dopay'); //订单支付
Route::get('/order_list', 'OrderController@orderList')->name('weixin_order_list'); //全部订单列表
Route::get('/order_wxpay', 'OrderController@orderWxpay')->name('weixin_order_wxpay'); //订单微信支付
Route::get('/order_yuepay', 'OrderController@orderYuepay')->name('weixin_order_yuepay'); //订单余额支付
//收货地址
Route::get('/user_address', 'AddressController@index')->name('weixin_user_address_list');
Route::get('/user_address_add', 'AddressController@userAddressAdd')->name('weixin_user_address_add');

Loading…
Cancel
Save