tp --订单的生成

在订单确认界面的商品总价  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和数量
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值