在订单确认界面的商品总价 goods/buy
商品总价 = 数量*单价
所以在 视图的 if判断的两个li红都加上
<input type="hidden" class="price" value="{$goods_data.shop_price}">
<input type="hidden" name="num" class="num" value="{$num}">
在js里面: 给li外面的ul添加上class="goods_list"
<script>
var total = 0;
$(".goods_list li").each(function(k,v){
var price = $(v).find(".price").val();
var num = $(v).find(".num").val();
total+=price*num; JS里面原本该是数字的 打印如果是NAN 表示你的计算里面有字符串
})
$("#goods_amount").text("¥"+total);
运费的话一般手机端 自己设定满多少钱就包邮
var send_price = 0; //运费
if(total<90){
send_price = 15; //满90包邮
}
$("#method_money").text("¥"+send_price);
$("#order_money").html("¥<span>"+(total+send_price)+"</span>"); //运费+总价
因为总价格和运费要返回到后台
<input type="hidden" name="total" id="total">
<input type="hidden" name="send_price" id="send_price">
$("#total").val(total);
$("#send_price").val(send_price);
</script>
因为总价格和运费要返回到后台
<input type="hidden" name="total" id="total">
<input type="hidden" name="send_price" id="send_price">
提交订单是要将地址商品等都要提交到后台
所以在section 标签外面添加form标签
<form action="{:U('Order/make')}" method="post">
</form>
如果是购买单个商品(就是从立即购买提交过来的) 应该在提交订单的时候返回其商品id 和购买商品数量 因为立即购买没有mysql表
所以子第一个li里面加上
<input type="hidden" name="goods_id" class="goods_id" value="{$goods_data.id}">
由于button 在form标签的外面,所以要点击提交按钮就执行提交 应该给button 标签添加 οnclick="$('form').submit();"
<button type="button" οnclick="$('form').submit();" class="btn btn-warning navbar-btn pull-right" id="order-submit">提交订单</button>
如果是购物车进去的就值需要提交 地址和总价
如果是立即购买进去就提交 地址 总价 数量 商品id
新建
namespace Home\Controller;
class OrderController extends BackController{
public function make(){
print_r($_POST);
$num = I("post.num",0,"int");
$address_id = I('post.address_id',0,"int");
$price = I('post.total',0,"number_float");
$send_price = I('post.send_price',0,"number_float");
$data['order_num'] = date("YmdHis").time().mt_rand(1000,9999);//自定义生成订单号
$data['create_time'] = time();//创建时间
$data['user_id'] = session("user.id");//用户id
$address = M("address")->where("id=".$address_id)->find(); //通过传过来的地址id查询出地址
$data['address'] = "姓名:".$address['name'].",电话:".$address['tel'].",详细地址:".$address['address'];
$data['price'] = $price;
$data['send_price'] = $send_price;
$data['status'] = 0;
if($num == 0){
//Array ( [address_id] => 2 [goods_id] => 1 [num] => 1 [total] => 17 )
//是购物车的订单提交
$cart = D("CartView");
$cart_data = $cart->where("cart.user_id=".session("user.id"))->select();
$data['goods'] = json_encode($cart_data);//直接把购物车的商品当作json存入
//清除购物车
M("cart")->where("user_id=".session("user.id"))->delete();
}else{
//是单个商品立即购买的订单提交
$goods_id = I("post.goods_id",0,"int");
$goods = M("goods");//为了方便我们后面对订单的处理 争取两种不同提交方式生成的goods格式一样
$goods_data = $goods->field("id,img,name,info,shop_price")->where("id=".$goods_id)->find();
$goods_data['goods_id'] = $goods_id;
$goods_data['num'] = $num;
$new_data[0] = $goods_data; 多维数组转换成json 和上面的 $cart_data格式一样
$data['goods'] = json_encode($new_data);
}
$order = M("order");
if($order->add($data)){
// $order_id = $order->getLastInsID();//得到新增的订单的id
//$this->success("生成订单成功",U("Order/sure",array('id'=>$order_id)));
$this->assign("data",$data);
$this->assign("total",$price+$send_price);
$this->display("sure");
}else{
$this->error("订单生成失败,请重新购买");
}
}
}
视图里面 新建Order 文件夹 将sure_order.html 放进去
订 单 号:{$data.order_num}
订单金额:¥{$total}
支付方式:支付宝
配送地址:{$data.address}
这样之后就暂时不管了,到时候用支付宝在做
回到首页,点击用户中心
在User控制器下面新建
public function index(){
$this->display("my");
}
在User视图里面放上 my.html 其他功能下来自己做
<a href="{:U('Order/index')}" class="user-order">我的订单</a>
点击我的订单
在Order控制器里面新建
public function index(){
视图里面my_order.html 里面,有三个状态 就上面的选项卡
//我们假设跳转状态等于0的 默认为0 未完成
$status = I("get.status",0,"int");
$order = M("order");
$data = $order->where("user_id=".session("user.id")." and status=".$status)->select();
foreach($data as $key=>$val){
$data[$key]['goods_arr'] = json_decode($val['goods'],true);
$data[$key]['goods_num'] = count($data[$key]['goods_arr']);
$data[$key]['total'] = $val['price'] + $val['send_price'];
}
$this->assign("status",$status);
$this->assign("data",$data);
$this->display(); 在视图里面将my_order.html 改为index.html 只要未完成的部分
}
视图里面
<section class="m-component-user" id="m-user">
<div class="m-userorder-tab">
<ul class="nav nav-tabs">
<li <if condition="$status eq 0">class="active"</if>><a href="{:U('Order/index',array('status'=>0))}">未完成</a></li>
<li <if condition="$status eq 1">class="active"</if>><a href="{:U('Order/index',array('status'=>1))}">已完成</a></li>
<li <if condition="$status eq 2">class="active"</if>><a href="{:U('Order/index',array('status'=>2))}">已取消</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active m-user-order">
<div class="m-cartlist">
<ul class="list-unstyled">
<volist name="data" id="v">
<li>
<div class="m-orderinfo">
<span class="pull-right m-ordering">
<if condition="$v['status'] eq 0">未发货</if>
<if condition="$v['status'] eq 1">已发货</if>
<if condition="$v['status'] eq 2">已收获</if>
</span>
订单编号:{$v.order_num}
</div>
<foreach name="v['goods_arr']" item="val">
<a href="{:U('Goods/detail',array('id'=>$val['goods_id']))}">
<img class="lazy pull-left" src="{$val.img}">
<div class="m-cartlist-info">
<h3>{$val.name}X{$val.num}</h3>
<h4>{$val.info}</h4>
</div>
</a>
</foreach>
<div class="m-ordertotal">
<span>共 <strong>{$v.goods_num}</strong> 件商品 </span>
<span>实付款<strong>¥{$v.total}</strong></span>
</div>
<div class="m-orderfun" data-order="150406577377">
<button type="button" class="btn btn-default btn-sm btn-order-cancal" data-order='150406577377'>取消订单</button>
<button type="button" class="btn btn-warning btn-sm btn-order-pay" data-order='150406577377'>立即支付</button>
</div>
</li>
</volist>
</ul>
</div>
</div>
</div>
</div>
</section>
提交订单就是生成订单,一般总价格会一起提交过去
为了区分是通过购物车进入的购买界面还是点击立即购买进入的,在立即购买进入的界面的判断里面加几个隐藏的input存放单个商品的id和数量
商品总价 = 数量*单价
所以在 视图的 if判断的两个li红都加上
<input type="hidden" class="price" value="{$goods_data.shop_price}">
<input type="hidden" name="num" class="num" value="{$num}">
在js里面: 给li外面的ul添加上class="goods_list"
<script>
var total = 0;
$(".goods_list li").each(function(k,v){
var price = $(v).find(".price").val();
var num = $(v).find(".num").val();
total+=price*num; JS里面原本该是数字的 打印如果是NAN 表示你的计算里面有字符串
})
$("#goods_amount").text("¥"+total);
运费的话一般手机端 自己设定满多少钱就包邮
var send_price = 0; //运费
if(total<90){
send_price = 15; //满90包邮
}
$("#method_money").text("¥"+send_price);
$("#order_money").html("¥<span>"+(total+send_price)+"</span>"); //运费+总价
因为总价格和运费要返回到后台
<input type="hidden" name="total" id="total">
<input type="hidden" name="send_price" id="send_price">
$("#total").val(total);
$("#send_price").val(send_price);
</script>
因为总价格和运费要返回到后台
<input type="hidden" name="total" id="total">
<input type="hidden" name="send_price" id="send_price">
提交订单是要将地址商品等都要提交到后台
所以在section 标签外面添加form标签
<form action="{:U('Order/make')}" method="post">
</form>
如果是购买单个商品(就是从立即购买提交过来的) 应该在提交订单的时候返回其商品id 和购买商品数量 因为立即购买没有mysql表
所以子第一个li里面加上
<input type="hidden" name="goods_id" class="goods_id" value="{$goods_data.id}">
由于button 在form标签的外面,所以要点击提交按钮就执行提交 应该给button 标签添加 οnclick="$('form').submit();"
<button type="button" οnclick="$('form').submit();" class="btn btn-warning navbar-btn pull-right" id="order-submit">提交订单</button>
如果是购物车进去的就值需要提交 地址和总价
如果是立即购买进去就提交 地址 总价 数量 商品id
新建
namespace Home\Controller;
class OrderController extends BackController{
public function make(){
print_r($_POST);
$num = I("post.num",0,"int");
$address_id = I('post.address_id',0,"int");
$price = I('post.total',0,"number_float");
$send_price = I('post.send_price',0,"number_float");
$data['order_num'] = date("YmdHis").time().mt_rand(1000,9999);//自定义生成订单号
$data['create_time'] = time();//创建时间
$data['user_id'] = session("user.id");//用户id
$address = M("address")->where("id=".$address_id)->find(); //通过传过来的地址id查询出地址
$data['address'] = "姓名:".$address['name'].",电话:".$address['tel'].",详细地址:".$address['address'];
$data['price'] = $price;
$data['send_price'] = $send_price;
$data['status'] = 0;
if($num == 0){
//Array ( [address_id] => 2 [goods_id] => 1 [num] => 1 [total] => 17 )
//是购物车的订单提交
$cart = D("CartView");
$cart_data = $cart->where("cart.user_id=".session("user.id"))->select();
$data['goods'] = json_encode($cart_data);//直接把购物车的商品当作json存入
//清除购物车
M("cart")->where("user_id=".session("user.id"))->delete();
}else{
//是单个商品立即购买的订单提交
$goods_id = I("post.goods_id",0,"int");
$goods = M("goods");//为了方便我们后面对订单的处理 争取两种不同提交方式生成的goods格式一样
$goods_data = $goods->field("id,img,name,info,shop_price")->where("id=".$goods_id)->find();
$goods_data['goods_id'] = $goods_id;
$goods_data['num'] = $num;
$new_data[0] = $goods_data; 多维数组转换成json 和上面的 $cart_data格式一样
$data['goods'] = json_encode($new_data);
}
$order = M("order");
if($order->add($data)){
// $order_id = $order->getLastInsID();//得到新增的订单的id
//$this->success("生成订单成功",U("Order/sure",array('id'=>$order_id)));
$this->assign("data",$data);
$this->assign("total",$price+$send_price);
$this->display("sure");
}else{
$this->error("订单生成失败,请重新购买");
}
}
}
视图里面 新建Order 文件夹 将sure_order.html 放进去
订 单 号:{$data.order_num}
订单金额:¥{$total}
支付方式:支付宝
配送地址:{$data.address}
这样之后就暂时不管了,到时候用支付宝在做
回到首页,点击用户中心
在User控制器下面新建
public function index(){
$this->display("my");
}
在User视图里面放上 my.html 其他功能下来自己做
<a href="{:U('Order/index')}" class="user-order">我的订单</a>
点击我的订单
在Order控制器里面新建
public function index(){
视图里面my_order.html 里面,有三个状态 就上面的选项卡
//我们假设跳转状态等于0的 默认为0 未完成
$status = I("get.status",0,"int");
$order = M("order");
$data = $order->where("user_id=".session("user.id")." and status=".$status)->select();
foreach($data as $key=>$val){
$data[$key]['goods_arr'] = json_decode($val['goods'],true);
$data[$key]['goods_num'] = count($data[$key]['goods_arr']);
$data[$key]['total'] = $val['price'] + $val['send_price'];
}
$this->assign("status",$status);
$this->assign("data",$data);
$this->display(); 在视图里面将my_order.html 改为index.html 只要未完成的部分
}
视图里面
<section class="m-component-user" id="m-user">
<div class="m-userorder-tab">
<ul class="nav nav-tabs">
<li <if condition="$status eq 0">class="active"</if>><a href="{:U('Order/index',array('status'=>0))}">未完成</a></li>
<li <if condition="$status eq 1">class="active"</if>><a href="{:U('Order/index',array('status'=>1))}">已完成</a></li>
<li <if condition="$status eq 2">class="active"</if>><a href="{:U('Order/index',array('status'=>2))}">已取消</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active m-user-order">
<div class="m-cartlist">
<ul class="list-unstyled">
<volist name="data" id="v">
<li>
<div class="m-orderinfo">
<span class="pull-right m-ordering">
<if condition="$v['status'] eq 0">未发货</if>
<if condition="$v['status'] eq 1">已发货</if>
<if condition="$v['status'] eq 2">已收获</if>
</span>
订单编号:{$v.order_num}
</div>
<foreach name="v['goods_arr']" item="val">
<a href="{:U('Goods/detail',array('id'=>$val['goods_id']))}">
<img class="lazy pull-left" src="{$val.img}">
<div class="m-cartlist-info">
<h3>{$val.name}X{$val.num}</h3>
<h4>{$val.info}</h4>
</div>
</a>
</foreach>
<div class="m-ordertotal">
<span>共 <strong>{$v.goods_num}</strong> 件商品 </span>
<span>实付款<strong>¥{$v.total}</strong></span>
</div>
<div class="m-orderfun" data-order="150406577377">
<button type="button" class="btn btn-default btn-sm btn-order-cancal" data-order='150406577377'>取消订单</button>
<button type="button" class="btn btn-warning btn-sm btn-order-pay" data-order='150406577377'>立即支付</button>
</div>
</li>
</volist>
</ul>
</div>
</div>
</div>
</div>
</section>
提交订单就是生成订单,一般总价格会一起提交过去
为了区分是通过购物车进入的购买界面还是点击立即购买进入的,在立即购买进入的界面的判断里面加几个隐藏的input存放单个商品的id和数量