/** * 购物车 */ public function index() { if (IS_POST) { } elseif (IS_GET) { $list = $this->Cart->getList(); if (get_distributor($this->mid)) { foreach ($list as $key => $val) { $list[$key]['price'] = MSC('distributor_discount') * $val['price']; } } $this->list = $list; $this->display(); } }
public function reserve() { if (!$this->mid) { // json_return(300,'请先登录.',array(),U('Login/index')); $this->error('请先登录', U('Login/index')); } $goods_id = intval($_POST['goods_id']); $spec_id = intval($_POST['spec_id']); $num = intval($_POST['num']); if ($num) { if ($spec_id) { $goods_id = M('GoodsSpec')->where(array('spec_id' => $spec_id))->getField('goods_id'); } $goods = M('Goods')->where(array('goods_id' => $goods_id))->find(); if (get_distributor($this->mid)) { $cdisc = MSC('distributor_discount'); } else { $cdisc = 1; } $data['order_sn'] = order_sn(); $data['member_id'] = $this->mid; $data['order_type'] = 2; $data['goods_amount'] = $cdisc * get_discount($num) * $num * $goods['goods_price']; $data['discount'] = 0; $data['order_amount'] = $data['goods_amount'] - $data['discount']; $data['order_state'] = 0; $data['add_time'] = NOW_TIME; $data['goods_id'] = $goods_id; $data['spec_id'] = $spec_id; $data['reserve_num'] = $num; $res = M('Reserve')->add($data); if ($res) { $this->success('预订成功', $_SERVER['HTTP_REFERER']); // json_return(200,'预订成功.'); } else { $this->error('预订失败'); // json_return(300,'预定失败.'); } } else { $this->error('预订数量不能为空'); json_return(300, '预订数量不能为空'); } }
/** * 生成订单 */ public function creatOrder() { $addr_id = intval($_POST['addr_id']); $addr_info = M('MemberAddrs')->where(array('addr_id' => $addr_id))->find(); $goods_list = M('OrderGoods')->where(array('order_id' => 0, 'member_id' => $this->mid))->select(); if (!empty($addr_info)) { $data['order_sn'] = order_sn(); $data['member_id'] = $this->mid; $data['buyer_name'] = get_member_nickname($this->mid); switch (trim($_POST['pay_type'])) { case 1: $data['payment_name'] = 'alipay'; break; case 2: $data['payment_name'] = 'bdpay'; break; } $data['shipping_fee'] = 0; $data['goods_amount'] = 0; $data['discount'] = 0; $data['order_amount'] = 0; if (empty($goods_list)) { $this->error('您还没有选择好商品哦.', U('Cart/index')); } foreach ($goods_list as $key => $val) { //计算价格同时清除购物车里的商品 $Cart = new Cart(); $Cart->delItem($val['goods_id']); $goods_price = M('Goods')->where(array('goods_id' => $val['goods_id']))->getField('goods_price'); if (get_distributor($this->mid)) { $goods_price = $goods_price * MSC('distributor_discount'); } $data['goods_amount'] += $goods_price * $val['goods_num']; $data['discount'] += $data['goods_amount'] * (1 - get_discount($val['goods_num'])); //冻结库存 M('Goods')->where(array('goods_id' => $val['goods_id']))->setDec('goods_storage', $val['goods_num']); M('Goods')->where(array('goods_id' => $val['goods_id']))->setInc('goods_freez', $val['goods_num']); } $data['order_amount'] = $data['goods_amount'] - $data['discount']; $data['order_message'] = str_rp($_POST['order_message'], 1); $member = M('Member')->where(array('member_id' => $this->mid))->field('mobile,email')->find(); $data['mobile'] = $member['mobile']; $data['email'] = $member['email']; $data['order_state'] = 10; $data['add_time'] = NOW_TIME; $order_id = M('Order')->add($data); if ($order_id) { //认领订单商品 已从购物车页面写入 M('OrderGoods')->where(array('order_id' => 0, 'member_id' => $this->mid))->setField('order_id', $order_id); //生成物流地址 $address_data['order_id'] = $order_id; $address_data['buyer_id'] = $this->mid; $address_data['true_name'] = $addr_info['name']; $address_data['prov_id'] = $addr_info['province_id']; $address_data['city_id'] = $addr_info['city_id']; $address_data['area_id'] = $addr_info['area_id']; $address_data['address'] = $addr_info['addr']; $address_data['zip_code'] = $addr_info['zip']; $address_data['mob_phone'] = $addr_info['mobile']; $address_data['add_time'] = NOW_TIME; M('OrderAddress')->add($address_data); //订单日志 $log_data['order_id'] = $order_id; $log_data['order_state'] = get_order_state_name(10); $log_data['change_state'] = get_order_state_name(20); $log_data['state_info'] = '会员确认订单'; $log_data['log_time'] = NOW_TIME; $log_data['operator'] = '会员'; M('OrderLog')->add($log_data); //进行支付跳转 switch (trim($_POST['pay_type'])) { case 1: $this->success('订单生成成功', U('Pay/alipay', array('order_sn' => $data['order_sn']))); break; case 2: $this->success('订单生成成功', U('Pay/bdpay', array('order_sn' => $data['order_sn']))); break; } } } else { $this->error('请选择收货地址'); } }