
/**
* 订单添加
* 含有关联添加和事务回滚
* Power by Mikkle
* QQ:776329498
* @param $data
* @return array
*/
public function addOrder($data)
{ if (!isset($data['consignee_id'])) return ['code' => '1003', 'msg' => '地址信息不存在'];
$consignee = $this->table('my_user_address')->where(['guid' => $data['consignee_id'], 'status' => 1])->find(); if (!$consignee) return ['code' => '1003', 'msg' => '地址信息不存在'];
$cart_list = json_decode($data['cart_list']); if (!is_array($cart_list) || !$cart_list) return ['code' => '1003', 'msg' => '订单商品信息不存在']; // 计算总金额
$goods_money = 0; foreach ($cart_list as $cart_key => $cart_value) { if (is_object($cart_value)) {
$goods = $this->table('v_guid_all')->where('my_guid', $cart_value->cart_id)->find();
$goods_num = $cart_value->num;
} elseif (is_array($cart_value)) {
$goods = $this->table('my_guid_all')->where('my_guid', $cart_value['cart_id'])->find();
$goods_num = $cart_value['num'];
} else {
$goods = [];
} if (!$goods) return ['code' => '1003', 'msg' => '商品信息不存在'];
$data_order[$cart_key]['my_guid'] = $goods['my_guid'];
$data_order[$cart_key]['my_price'] = $goods['my_price'];
$data_order[$cart_key]['my_num'] = $goods_num;
$goods_money = $goods_money + $goods['my_price'] * $goods_num;
}
$order_data['uuid'] = $data['uuid'];
$order_data['amount'] = $goods_money;
$order_data['order_num'] = count($data_order);
$order_data['distribute'] = $data['distribute'];
$order_data['order_state'] = 0;
$order_data['expiration_time'] = time()+60*60*24*2;
$order_data['order_desc'] = $data['remark'];
$order_data['consignee_name'] = $consignee['consignee_name'];
$order_data['consignee_mobile'] = $consignee['consignee_mobile'];
$order_data['consignee_address'] = $consignee['province_name'] . ' ' . $consignee['area_name'] . ' ' . $consignee['district_name'] . ' ' . $consignee['consignee_address']; try{ $this->startTrans(); $this->data($order_data)->isUpdate(false)->save();
$new_order = $this->order_no; if (!is_numeric($new_order)) throw new \Exception("商品订单添加失败"); $this->hasMany('OrdersAccess', 'order_no', 'order_no')->saveAll($data_order); $this->commit(); return ['code' => '1001', 'msg' => '商品订单添加成功', 'data' => ['order_no' => $new_order, 'cart_list' => $data_order]];
}catch (\Exception $e){ $this->rollback(); return ['code'=>'1008','msg'=>'商品订单添加失败','data'];
}
}本文转载:https://www.kancloud.cn/mikkle/thinkphp5_study/329928
本文为逆天的蝈蝈的文章,转载无需和我联系,但请注明cojz8.com
逆天的蝈蝈:事务处理,厉害了
2017-09-05 14:15:37 回复