因为我们平台是多商家面向多用户的商城系统,如果你买了多个商家的商品,那么在发货的时候是一个件一个物流单号。而如果像一般商城一样,将用户从购物车内的商品添加到订单列表时,是拆分成单个订单插入的。
那么在取消的时候,就涉及到一个问题,如何取消一个组合订单就可以取消组合订单里面的全部小订单
1,首先在下单的时候就就给从购物车口添加的订单加上标记,用以区分是不是从购物车添加的订单
2,新建一张表,存的是购物车组合订单的信息,标记信息和订单表内的标记信息一直,是一对多的关系
3,发送查询一对多的sql语句,并返回查询结果
public function get_group_order_detail_by_id($record_id){
//$sql = "select * from 'group_order' where 'adam_id'=(select 'adam_id' from 'usercardrecord' where 'record_id'=".$record_id.")";
$adam_id = D('Usercardrecord')->where('record_id='.$record_id)->find()['adam_id'];
$max_order = D('Group_order')->where('adam_id="'.$adam_id.'"')->select();
if(!empty($max_order)){
return $max_order;
}
}
4,首先判断App传来的值是组合订单还是单独订单我用标记来区分
public function max_group_order_del(){
if(IS_POST){
//如果订单标识符内没有值,则是小订单
if($_POST['adam_id'] == '0'){
//获取订单详情
$now_order = D('Group_order')->get_order_detail_by_id($_SESSION["user"]["uid"],intval($_POST['order_id']));
if(empty($now_order)){
$this->returnAjax('当前订单不存在',0);
}else if($now_order['paid']){//付款字段
$this->returnAjax('当前订单已付款,不能取消',0);
}
$condition_group_order['order_id'] = $now_order['order_id'];
$data_group_order['status'] = 4;
if(D('Group_order')->where($condition_group_order)->data($data_group_order)->save()){
$this->returnAjax("取消订单成功",1);
}else{
$this->returnAjax('删除失败!请重试。',0);
}
}else if($_POST['adam_id'] == '1'){
//查询订单状态
$max_order = D('Group_order')->get_group_order_detail_by_id(intval($_POST['record_id']));
//如果当没有查到订单信息则返回错误
if(empty($max_order)){
$this->returnAjax('当前订单不存在',0);
}else if($max_order['paid']){//付款字段
$this->returnAjax('当前订单已付款,不能取消',0);
}
//循环取消大订单内的订单
foreach($max_order as $key=>$value){
$data_group_order['status'] = 4;
$status = D('Group_order')->where('order_id='.$value['order_id'])->data($data_group_order)->save();
}
if(!empty($status)){
$this->returnAjax('取消订单成功',1);
}else{
$this->returnAjax('删除失败!请重试。',0);
}
}else{
$this->returnAjax('操作错误',0);
}
}else{
$this->returnAjax("非法请求",0);
}
}
网友评论