/** * 弃用 * 为某个团购券退款 * 团购券退款总额 * 返回: 0:退款失败 1:成功 2全单退款 */ function refund_coupon($coupon_id) { return; $coupon_data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_coupon where id = " . $coupon_id . " and refund_status = 1"); if (!$coupon_data) { return 0; } $return = 1; $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $coupon_data['order_id']); if ($coupon_data['coupon_price'] <= $order_info['pay_amount'] - $order_info['payment_fee'] - $order_info['delivery_fee'] - $order_info['refund_amound']) { $refund_price = $coupon_data['coupon_price']; } else { $refund_price = $order_info['pay_amount'] - $order_info['refund_amound'] - $order_info['payment_fee']; //不退支付手续费; $return = 2; } $refund_price -= $coupon_data['coupon_money']; //返现的钱也退 $refund_score = 0 - $coupon_data['coupon_score']; //处理返利 if ($order_info['pay_status'] == 2) { //判断商品是否返利商品 $deal_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id=" . intval($coupon_data['deal_id'])); if ($deal_info['is_referral'] == 1) { $res = return_referrals($order_info['id']); if ($res) { save_log("ID:" . $order_info['id'] . l("REFERRALS_PAY_SUCCESS"), 1); } else { save_log("ID:" . $order_info['id'] . l("REFERRALS_PAY_FAILED"), 0); } } } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_coupon set refund_status = 2,is_valid = 2 where id = " . $coupon_data['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_amount = refund_amount+" . $refund_price . ",refund_status = 2,after_sale = 1 where id = " . $order_info['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal set buy_count=buy_count-1 where id=" . intval($coupon_data['deal_id'])); $affect_deal = $GLOBALS['db']->getRow("select buy_count from " . DB_PREFIX . "deal where id= " . intval($coupon_data['deal_id'])); if ($affect_deal['buy_count'] == 0) { $sql_1 = "update " . DB_PREFIX . "deal set buy_status = 0 where id= " . intval($coupon_data['deal_id']); } else { $sql_1 = "update " . DB_PREFIX . "deal set buy_status = 1 where id= " . intval($coupon_data['deal_id']); } $GLOBALS['db']->query($sql_1); $data = array("money" => $refund_price, "score" => $refund_score); require_once APP_ROOT_PATH . "system/model/user.php"; modify_account($data, $order_info['user_id'], "来自" . $order_info['order_sn'] . "中团购券" . $coupon_data['sn'] . "的退款 "); order_log("团购券" . $coupon_data['sn'] . "已退款" . format_price($refund_price), $order_info['id']); return $return; }
public function do_refuse() { $order_item_id = intval($_REQUEST['order_item_id']); $coupon_id = intval($_REQUEST['coupon_id']); $price = floatval($_REQUEST['price']); $balance_price = floatval($_REQUEST['balance_price']); $content = strim($_REQUEST['content']); if ($order_item_id) { $oi = $order_item_id; $data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order_item where id = " . $order_item_id); if ($data['refund_status'] == 2) { $this->error("已退款", 1); } if ($data) { $order_id = $data['order_id']; $supplier_id = $data['supplier_id']; } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 3,is_arrival = 0 where id = " . $order_item_id); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 3,is_refuse_delivery=0 where id = " . $order_id); } elseif ($coupon_id) { $data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_coupon where id = " . $coupon_id); if ($data['refund_status'] == 2) { $this->error("已退款", 1); } if ($data) { $oi = $data['order_deal_id']; $order_item = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order_item where id = " . $data['order_deal_id']); $data['name'] = $order_item['name']; $order_id = $data['order_id']; $supplier_id = $data['supplier_id']; } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_coupon set refund_status = 3 where id = " . $coupon_id); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 3 where id = " . $data['order_deal_id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 3 where id = " . $order_id); } $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $order_id); require_once APP_ROOT_PATH . "system/model/deal_order.php"; order_log($data['name'] . "退款不通过 " . " " . $content, $order_id); auto_over_status($order_id); update_order_cache($order_id); distribute_order($order_id); send_msg($order_info['user_id'], $data['name'] . "退款不通过 " . " " . $content, "orderitem", $oi); $this->success("操作成功", 1); }
public function notify_merge(){ $time = time(); $alipayNotify = new AlipayNotify($this->alipay_config); $verify_result = $alipayNotify->verifyNotify(); if($verify_result && $_POST['trade_status'] == 'TRADE_SUCCESS') { //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; //买家支付宝账号 $buyer_email = $_POST['buyer_email']; //$array_ids = explode(',',$_POST['out_trade_no']); $model = M('order'); $olist_data['mo_id'] = $out_trade_no; $orderlist = $model->field('id,order_id,type,sourceid,total_fee,total_num,bond,other_pay,member_id,member_name,realname,user_id,title,goods,status')->where($olist_data)->order('id asc')->select(); $odmodel = M('order_detail'); $rmodel = M('record'); $wallet_model = M('member_wallet'); $wlmodel = M('member_wallet_log'); $model->startTrans();//启用事务 if($_POST['extra_common_param']){ $paramstr = $_POST['extra_common_param']; if($paramstr){ $arr = explode(',',$paramstr); foreach($arr as $val){ $ar = explode('|',$val); $key = $ar[0]; $v = $ar[1]; $$key = $v; } } } //支付渠道 if($payment_channel){ $this->payment_channel = $payment_channel; } foreach($orderlist as $vo){ /* $data['id'] = $id; $vo = $model->field('id,order_id,type,sourceid,total_fee,total_num,bond,other_pay,member_id,member_name,realname,user_id,title,goods,status')->where($data)->find(); */ //已支付 if($vo['status']>0){ $model->rollback(); $this->update_remark('已支付'); echo "success";exit; } if($vo['type']==2){ //云购直接完成交易 $sdata['confirm_time'] = $time; } //订单状态修改 $wdata['id'] = $vo['id']; $sdata['status'] = 1; $sdata['payment_mode'] = '1'; $sdata['payment_company'] = $this->payment_company; $sdata['payment_channel'] = $this->payment_channel; $sdata['pay_order_id'] = $trade_no; $sdata['pay_time'] = $time; $result = $model->where($wdata)->save($sdata); if(!$result){ $model->rollback(); $this->update_remark('订单状态修改失败'); echo "success";exit; } unset($rdata); //买家账户记录 $rdata['member_id'] = $vo['member_id']; $wallet = $wallet_model->where($rdata)->find(); $rdata['pay_type'] = $pay_type ? $pay_type : 2; $rdata['member_name'] = $vo['member_name']; $rdata['realname'] = $vo['realname']; $rdata['payment_mode'] = '1'; $rdata['payment_company'] = '支付宝'; $rdata['order_id'] = $vo['order_id']; $rdata['pay_order_id'] = $trade_no; $rdata['buyer'] = $buyer_email; $rdata['balance'] = $wallet['balance'] ? $wallet['balance'] : 0; $rdata['content'] = $_POST['body'] ? $_POST['body'] : ''; if($vo['bond']){ $rdata['content'] .= '共支付:'.$vo['total_fee'].';支付宝支付'.$_POST['total_fee'].';保证金支付'.$vo['bond']; }else{ $rdata['content'] .= '共支付:'.$vo['total_fee']; } $rdata['pay'] = $_POST['total_fee']; $rdata['create_time'] = $time; $rdata['status'] = 1; $rdata['pay_time'] = $_POST['gmt_payment'] ? strtotime($_POST['gmt_payment']) : $time; $rid = $rmodel->add($rdata); if(!$rid){ $model->rollback(); $this->update_remark('买家账户记录失败'); exit; } //扣除买家保证金 if($vo['bond']){ $wallet_data2['member_id'] = $vo['member_id']; if($result)$result=$wallet_model->where($wallet_data2)->setDec('frozen',$vo['bond']); //记录变化 $wl_data['title'] = '扣除保证金并完成支付,订单号:'.$vo['order_id']; $wl_data['member_id'] = $vo['member_id']; $wl_data['oid'] = $vo['id']; $wl_data['pay_type'] = 3; $wl_data['pay'] = $vo['bond']; $wl_data['content'] = '扣除保证金并完成支付,订单号:<a href="'.C('MEMBER_SITE_URL').'/index.php/Orders/index/order_id/'.$vo['order_id'].'">'.$vo['order_id'].'</a>;扣除保证金:'.$vo['bond']; $wl_data['create_time'] = time(); $result=$wlmodel->add($wl_data); if(!$result){ $model->rollback(); $this->update_remark('保证金操作失败'); exit; } } //减去冻结资金 if($vo['other_pay']){ $wallet_data2['member_id'] = $vo['member_id']; if($result)$result=$wallet_model->where($wallet_data2)->setDec('frozen',$vo['bond']); //记录变化 $wl_data['title'] = '扣除冻结资金并完成支付,订单号:'.$vo['order_id']; $wl_data['member_id'] = $vo['member_id']; $wl_data['oid'] = $vo['id']; $wl_data['pay_type'] = 3; $wl_data['pay'] = $vo['bond']; $wl_data['content'] = '扣除冻结资金并完成支付,订单号:<a href="'.C('MEMBER_SITE_URL').'/index.php/Orders/index/order_id/'.$vo['order_id'].'">'.$vo['order_id'].'</a>;扣除保证金:'.$vo['bond']; $wl_data['create_time'] = time(); $result=$wlmodel->add($wl_data); if(!$result){ $model->rollback(); $this->update_remark('冻结资金操作失败'); exit; } } //卖家资金记录 if($vo['seller_id']){ } if($result && $rid){ //支付成功 $log['order_sn'] = $vo['order_sn']; $log['utype'] = 1; $log['user_id'] = $vo['member_id']; $log['user_name'] = $vo['member_name']; $log['msg'] = '支付宝支付'; $log['action'] = '完成支付'; $log['create_time'] = $time; $log['ip'] = _get_ip(); order_log($log); }else{ $model->rollback(); echo "success";exit; $rstatus = 0; } } $model->commit(); $rstatus = 1; //记录淘宝传值信息 $rrmodel = M('pay_notify'); $rrwdata['order_id'] = $_POST['trade_no']; //$rrdata['rid'] = $rid ? $rid : 0; $rrdata['oid'] = $_POST['out_trade_no']; $rrdata['rstatus'] = $rstatus; $rrdata['create_time'] = $time; $rrmodel->where($rrwdata)->save($rrdata); echo "success"; }else{ echo "fail"; } }
/** * 为某个团购券退款 * 团购券退款总额 * 返回: 0:退款失败 1:成功 2全单退款 */ function refund_coupon($coupon_id) { $coupon_data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_coupon where id = " . $coupon_id . " and refund_status = 1"); if (!$coupon_data) { return 0; } $return = 1; $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $coupon_data['order_id']); if ($coupon_data['coupon_price'] <= $order_info['pay_amount'] - $order_info['payment_fee'] - $order_info['delivery_fee'] - $order_info['refund_amound']) { $refund_price = $coupon_data['coupon_price']; } else { $refund_price = $order_info['pay_amount'] - $order_info['refund_amound'] - $order_info['payment_fee']; //不退支付手续费; $return = 2; } $refund_price -= $coupon_data['coupon_money']; //返现的钱也退 $refund_score = 0 - $coupon_data['coupon_score']; $GLOBALS['db']->query("update " . DB_PREFIX . "deal_coupon set refund_status = 2,is_valid = 2 where id = " . $coupon_data['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_amount = refund_amount+" . $refund_price . ",refund_status = 2,after_sale = 1 where id = " . $order_info['id']); $data = array("money" => $refund_price, "score" => $refund_score); require_once APP_ROOT_PATH . "system/libs/user.php"; modify_account($data, $order_info['user_id'], "来自" . $order_info['order_sn'] . "中团购券" . $coupon_data['sn'] . "的退款 "); order_log("团购券" . $coupon_data['sn'] . "已退款" . format_price($refund_price), $order_info['id']); return $return; }
public function do_delivery_form() { $s_account_info = es_session::get("account_info"); $account_id = intval($s_account_info['id']); $account_data = $GLOBALS['db']->getRow("select a.allow_delivery,s.name as name,a.account_name as account_name, a.supplier_id as supplier_id from " . DB_PREFIX . "supplier_account as a left join " . DB_PREFIX . "supplier as s on a.supplier_id = s.id where a.id = " . $account_id); if (intval($account_data['allow_delivery']) == 0) { showErr($GLOBALS['lang']['NO_DELIVERY_AUTH']); } $order_id = intval($_REQUEST['order_id']); $supplier_id = intval($GLOBALS['db']->getOne("select supplier_id from " . DB_PREFIX . "supplier_account where id = " . intval($s_account_info['id']))); $order_info = $GLOBALS['db']->getAll("select do.*,d.name,d.sub_name,doi.number,doi.delivery_status,doi.id as doiid from " . DB_PREFIX . "deal_order_item as doi left join " . DB_PREFIX . "deal as d on doi.deal_id = d.id left join " . DB_PREFIX . "deal_order as do on doi.order_id = do.id left join " . DB_PREFIX . "deal_location_link as l on l.deal_id = d.id where l.location_id in (" . implode(",", $s_account_info['location_ids']) . ") and do.id = " . $order_id . " and d.supplier_id = " . $supplier_id . " and do.is_delete = 0 and do.pay_status = 2 and d.is_delivery = 1"); if (!$order_info) { showErr($GLOBALS['lang']['NO_AUTH']); } $order_deals = $_REQUEST['order_deals']; $delivery_sn = htmlspecialchars(addslashes($_REQUEST['delivery_sn'])); $express_id = intval($_REQUEST['express_id']); $memo = htmlspecialchars(addslashes($_REQUEST['memo'])); if (!$order_deals) { showErr($GLOBALS['lang']["PLEASE_SELECT_DELIVERY_ITEM"]); } else { $deal_names = array(); foreach ($order_deals as $order_deal_id) { $order_deal_id = intval($order_deal_id); $deal_info = $GLOBALS['db']->getOne("select d.* from " . DB_PREFIX . "deal as d left join " . DB_PREFIX . "deal_order_item as doi on doi.deal_id = d.id where doi.id = " . $order_deal_id); $deal_name = $deal_info['sub_name']; array_push($deal_names, $deal_name); $rs = make_delivery_notice($order_id, $order_deal_id, $delivery_sn, $memo, $express_id); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set delivery_status = 1 where id = " . $order_deal_id); update_balance($order_deal_id, $deal_info['id']); } } $deal_names = implode(",", $deal_names); send_delivery_mail($delivery_sn, $deal_names, $order_id); send_delivery_sms($delivery_sn, $deal_names, $order_id); //开始同步订单的发货状态 $order_deal_items = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_deal_items as $k => $v) { if (intval($GLOBALS['db']->getOne("select is_delivery from " . DB_PREFIX . "deal where id = " . $v['deal_id'])) == 0) { unset($order_deal_items[$k]); } } $delivery_deal_items = $order_deal_items; foreach ($delivery_deal_items as $k => $v) { if ($v['delivery_status'] == 0) { unset($delivery_deal_items[$k]); } } if (count($delivery_deal_items) == 0 && count($order_deal_items) != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 0 where id = " . $order_id); //未发货 } elseif (count($delivery_deal_items) > 0 && count($order_deal_items) != 0 && count($delivery_deal_items) < count($order_deal_items)) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 1 where id = " . $order_id); //部分发 } else { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 2 where id = " . $order_id); //全部发 } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set update_time = '" . get_gmtime() . "' where id = " . $order_id); order_log($account_data['name'] . $account_data['account_name'] . ":" . $GLOBALS['lang']["DELIVERY_SUCCESS"] . $delivery_sn . $_REQUEST['memo'], $order_id); showSuccess($GLOBALS['lang']["DELIVERY_SUCCESS"], 0, url("biz", "order#view", array("id" => $order_id))); } }
public function index() { $city_name = strim($GLOBALS['request']['city_name']); //城市名称 $root = array(); //检查用户,用户密码 $user = $GLOBALS['user_info']; $user_id = intval($user['id']); $root['return'] = 1; if ($user_id > 0) { $did = intval($GLOBALS['request']['did']); $cid = intval($GLOBALS['request']['cid']); $content = strim($GLOBALS['request']['content']); if (empty($content)) { $root['status'] = 0; $root['info'] = "请填写退款原因"; output($root); } if ($did) { //退单 $deal_order_item = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order_item where id = " . $did); $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = '" . $deal_order_item['order_id'] . "' and order_status = 0 and user_id = " . $user_id); if ($order_info) { if ($deal_order_item['delivery_status'] == 0 && $order_info['pay_status'] == 2 && $deal_order_item['is_refund'] == 1) { if ($deal_order_item['refund_status'] == 0) { //执行退单,标记:deal_order_item表与deal_order表, $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 1 where id = " . $deal_order_item['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 1 where id = " . $deal_order_item['order_id']); $msg = array(); $msg['rel_table'] = "deal_order"; $msg['rel_id'] = $deal_order_item['order_id']; $msg['title'] = "退款申请"; $msg['content'] = "退款申请:" . $content; $msg['create_time'] = NOW_TIME; $msg['user_id'] = $user_id; $GLOBALS['db']->autoExecute(DB_PREFIX . "message", $msg); update_order_cache($deal_order_item['order_id']); order_log($deal_order_item['sub_name'] . "申请退款,等待审核", $deal_order_item['order_id']); require_once APP_ROOT_PATH . "system/model/deal_order.php"; distribute_order($order_info['id']); $root['status'] = 1; $root['info'] = "退款申请已提交,请等待审核"; output($root); } else { $root['status'] = 0; $root['info'] = "不允许退款"; output($root); } } else { $root['status'] = 0; $root['info'] = "非法操作"; output($root); } } else { $root['status'] = 0; $root['info'] = "非法操作"; output($root); } } elseif ($cid) { //退券 $coupon = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_coupon where user_id = " . $user_id . " and id = " . $cid); if ($coupon) { if ($coupon['refund_status'] == 0 && $coupon['confirm_time'] == 0) { //从未退过款可以退款,且未使用过 if ($coupon['any_refund'] == 1 || $coupon['expire_refund'] == 1 && $coupon['end_time'] > 0 && $coupon['end_time'] < NOW_TIME) { //随时退或过期退已过期 //执行退券 $GLOBALS['db']->query("update " . DB_PREFIX . "deal_coupon set refund_status = 1 where id = " . $coupon['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 1 where id = " . $coupon['order_deal_id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 1 where id = " . $coupon['order_id']); $deal_order_item = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order_item where id = " . $coupon['order_deal_id']); $msg = array(); $msg['rel_table'] = "deal_order"; $msg['rel_id'] = $coupon['order_id']; $msg['title'] = "退款申请"; $msg['content'] = $content; $msg['create_time'] = NOW_TIME; $msg['user_id'] = $user_id; $GLOBALS['db']->autoExecute(DB_PREFIX . "message", $msg); update_order_cache($coupon['order_id']); order_log($deal_order_item['sub_name'] . "申请退一张团购券,等待审核", $coupon['order_id']); require_once APP_ROOT_PATH . "system/model/deal_order.php"; distribute_order($coupon['order_id']); $root['status'] = 1; $root['info'] = "退款申请已提交,请等待审核"; output($root); } else { $root['status'] = 0; $root['info'] = "不允许退款"; output($root); } } else { $root['status'] = 0; $root['info'] = "非法操作"; output($root); } } else { $root['status'] = 0; $root['info'] = "非法操作"; output($root); } } else { $root['status'] = 0; $root['info'] = "非法操作"; output($root); } } else { $root['user_login_status'] = 0; } output($root); }
/** * 退款订单发货 */ public function return_item(){ $model = M('OrderDetail'); $sn = $_REQUEST['order_sn']; $ar = explode('_',$sn); $order_sn = $ar[0]; $od_id = $ar[1]; $data['a.order_sn'] = $order_sn; $count = $model->where($data)->count(); $data['a.id'] = $od_id-8000; $vo = $model->field('a.*,b.actual_paid,b.pay_status,b.discount_fee,b.coupons_fee,b.confirm_time,create_time')->alias('a')->join('`'.C('DB_PREFIX').'order` as b on a.order_id=b.id')->where($data)->find(); if(!$vo){ $this->error('订单不存在'); } //已申请退款或未支付不可申请 if($vo['refund_status']!=2){ if(IS_AJAX){ ajaxErrReturn('状态错误'); } $this->error('状态错误'); } if($count==1){ $vo['pay_amount'] = $vo['actual_paid']; $vo['pay_msg'] = ''; }else{ $info = refund_pay($vo); $vo['pay_amount'] = $info['pay_amount']; $vo['pay_msg'] = $info['msg']; } //快递公司 $s_model = M('Shipping'); if(IS_POST){ $d_model = M('OrderDelivery'); $d_data['order_sn'] = $vo['order_sn']; $d_data['item_id'] = $vo['id']; $d_data['item_name'] = $vo['product_name']; $d_data['type'] = 2; $d_data['shipping_id'] = $_POST['shipping_id']; if($_POST['shipping_id']==0){ $d_data['shipping_company'] = $_POST['shipping_company']; }else{ $s_data['id'] = $_POST['shipping_id']; $shipping = $s_model->where($s_data)->find(); $d_data['shipping_company'] = $shipping['name']; $d_data['shipping_code'] = $shipping['code']; } $d_data['shipping_no'] = $_POST['shipping_no']; $d_data['memo'] = $_POST['memo']; $delivery_id = $d_model->add($d_data); $wdata['id'] = $vo['id']; $sdata['refund_status'] = 4; $sdata['delivery_id'] = $delivery_id; //$model->startTrans();//启用事务 $result = $model->where($wdata)->save($sdata); if(!$result){ ajaxErrReturn('提交失败'); } //记录订单日志 $ot_data['order_sn'] = $vo['order_sn']; $ot_data['utype'] = 2; $ot_data['user_id'] = $this->user['id']; $ot_data['user_name'] = $this->user['username']; $ot_data['msg'] = '商品:'.$vo['product_name'].' '.$vo['spec'].' * '.$vo['num'].' 退款金额:'.$vo['pay_amount']; $ot_data['action'] = '退款快递填写'; $ot_data['create_time'] = time(); $ot_data['issystem'] = 0; $ot_data['ip'] = _get_ip(); order_log($ot_data); $msg['notice'] = '提交成功'; $msg['gourl'] = U('Order/index',array('order_sn'=>$vo['order_sn'])); ajaxSucReturn($msg); } $s_data['status'] = 1; $shippings = $s_model->where($s_data)->select(); $this->assign('shippings',$shippings); $this->assign('vo',$vo); $this->assign('headerTitle','退款快递填写'); $this->assign('headerKeywords','退款快递填写'); $this->assign('headerDescription','退款快递填写'); $this->assign('wx_title','退款快递填写'); $this->assign('wx_desc','微信分享'); $this->display(); }
/** * 结单操作,结单操作将发放邀请返利 * @param unknown_type $order_id */ function over_order($order_id) { $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where order_status = 0 and id = " . $order_id); if ($order_info) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set order_status = 1,is_refuse_delivery = 0 where order_status = 0 and id = " . $order_id); if (!$GLOBALS['db']->affected_rows()) { return; //结单失败 } order_log("订单完结", $order_id); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_coupon set is_valid = 2 where order_id = " . $order_id); distribute_order($order_id); //结单后只要有未退款的才可返利 $coupon_refunded = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_coupon where order_id = " . $order_id . " and refund_status = 2"); $order_item_refunded = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id . " and refund_status = 2"); if ($order_item_refunded > 0 || $coupon_refunded > 0 || $order_info['is_delete'] == 1) { return; //不再返利 } $goods_list = $GLOBALS['db']->getAll("select deal_id,sum(number) as num from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id . " group by deal_id"); //返利 //开始处理返利,只创建返利, 发放将与msg_list的自动运行一起执行 $user_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $order_info['user_id']); //开始查询所购买的列表中支不支持促销 $is_referrals = 1; //默认为返利 foreach ($goods_list as $k => $v) { $is_referrals = $GLOBALS['db']->getOne("select is_referral from " . DB_PREFIX . "deal where id = " . $v['deal_id']); if ($is_referrals == 0) { break; } } if ($user_info['referral_count'] < app_conf("REFERRAL_LIMIT") && $is_referrals == 1) { //开始返利给推荐人 $parent_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . $user_info['pid']); if ($parent_info) { if (app_conf("REFERRAL_IP_LIMIT") == 1 && $parent_info['login_ip'] != CLIENT_IP || app_conf("REFERRAL_IP_LIMIT") == 0) { if (app_conf("INVITE_REFERRALS_TYPE") == 0) { $referral_data['user_id'] = $parent_info['id']; //初返利的会员ID $referral_data['rel_user_id'] = $user_info['id']; //被推荐且发生购买的会员ID $referral_data['create_time'] = NOW_TIME; $referral_data['money'] = app_conf("INVITE_REFERRALS"); $referral_data['order_id'] = $order_info['id']; $GLOBALS['db']->autoExecute(DB_PREFIX . "referrals", $referral_data); //插入 } else { $referral_data['user_id'] = $parent_info['id']; //初返利的会员ID $referral_data['rel_user_id'] = $user_info['id']; //被推荐且发生购买的会员ID $referral_data['create_time'] = NOW_TIME; $referral_data['score'] = app_conf("INVITE_REFERRALS"); $referral_data['order_id'] = $order_info['id']; $GLOBALS['db']->autoExecute(DB_PREFIX . "referrals", $referral_data); //插入 } $GLOBALS['db']->query("update " . DB_PREFIX . "user set referral_count = referral_count + 1 where id = " . $user_info['id']); } } } //返利over } }
public function do_incharge() { $order_id = intval($_REQUEST['order_id']); $payment_id = intval($_REQUEST['payment_id']); $payment_info = M("Payment")->getById($payment_id); $memo = $_REQUEST['memo']; $order_info = M("DealOrder")->where("id=" . $order_id . " and is_delete = 0 and type = 0")->find(); if (!$order_info) { $this->error(l("INVALID_ORDER")); } if ($order_info['region_lv4'] > 0) { $region_id = $order_info['region_lv4']; } elseif ($order_info['region_lv3'] > 0) { $region_id = $order_info['region_lv3']; } elseif ($order_info['region_lv2'] > 0) { $region_id = $order_info['region_lv2']; } else { $region_id = $order_info['region_lv1']; } $delivery_id = $order_info['delivery_id']; $payment_id = intval($_REQUEST['payment_id']); $goods_list = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); $GLOBALS['user_info']['id'] = $order_info['user_id']; require_once APP_ROOT_PATH . "system/libs/cart.php"; $result = count_buy_total($region_id, $delivery_id, $payment_id, $account_money = 0, $all_account_money = 0, $ecvsn, $ecvpassword, $goods_list, $order_info['account_money'], $order_info['ecv_money'], $order_info['bank_id']); $user_money = M("User")->where("id=" . $order_info['user_id'])->getField("money"); //$pay_amount = $order_info['deal_total_price']+ $order_info['delivery_fee']-$order_info['account_money']-$order_info['ecv_money']+$payment_info['fee_amount']; $pay_amount = $result['pay_price']; if ($payment_info['class_name'] == 'Account' && $user_money < $pay_amount) { $this->error(l("ACCOUNT_NOT_ENOUGH")); } $notice_id = make_payment_notice($pay_amount, $order_id, $payment_id, $memo); $order_info['total_price'] = $result['pay_total_price']; $order_info['payment_fee'] = $result['payment_fee']; $order_info['delivery_fee'] = $result['delivery_fee']; $order_info['discount_price'] = $result['user_discount']; $order_info['payment_id'] = $payment_info['id']; $order_info['update_time'] = get_gmtime(); M("DealOrder")->save($order_info); $payment_notice = M("PaymentNotice")->getById($notice_id); $rs = payment_paid($payment_notice['id']); if ($rs && $payment_info['class_name'] == 'Account') { //余额支付 require_once APP_ROOT_PATH . "system/payment/Account_payment.php"; require_once APP_ROOT_PATH . "system/libs/user.php"; $msg = sprintf($payment_lang['USER_ORDER_PAID'], $order_info['order_sn'], $payment_notice['notice_sn']); modify_account(array('money' => "-" . $payment_notice['money'], 'score' => 0), $payment_notice['user_id'], $msg); } if ($rs) { order_paid($order_id); $msg = sprintf(l("MAKE_PAYMENT_NOTICE_LOG"), $order_info['order_sn'], $payment_notice['notice_sn']); save_log($msg, 1); order_log($msg . $_REQUEST['memo'], $order_id); $this->assign("jumpUrl", U("DealOrder/view_order", array("id" => $order_id))); $this->success(l("ORDER_INCHARGE_SUCCESS")); } else { $this->assign("jumpUrl", U("DealOrder/view_order", array("id" => $order_id))); $this->success(l("ORDER_INCHARGE_FAILED")); } }
function order_paid_done($order_id) { //处理支付成功后的操作 /** * 1. 发货 * 2. 超量发货的存到会员中心 * 3. 发券 * 4. 发放抽奖 */ require_once APP_ROOT_PATH . "system/model/deal.php"; require_once APP_ROOT_PATH . "system/model/supplier.php"; require_once APP_ROOT_PATH . "system/model/deal_order.php"; $order_id = intval($order_id); $stock_status = true; //团购状态 $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $order_id); if ($order_info['type'] == 0) { //首先验证所有的规格库存 $order_goods_list = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_goods_list as $k => $v) { if ($GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "attr_stock where deal_id = " . $v['deal_id'] . " and locate(attr_str,'" . $v['attr_str'] . "') > 0")) { $sql = "update " . DB_PREFIX . "attr_stock set buy_count = buy_count + " . $v['number'] . " where deal_id = " . $v['deal_id'] . " and ((buy_count + " . $v['number'] . " <= stock_cfg) or stock_cfg = 0 )" . " and locate(attr_str,'" . $v['attr_str'] . "') > 0 "; $GLOBALS['db']->query($sql); //增加商品的发货量 $rs = $GLOBALS['db']->affected_rows(); if ($rs) { $affect_attr_list[] = $v; } else { $stock_status = false; break; } } } if ($stock_status) { $goods_list = $GLOBALS['db']->getAll("select buy_type,deal_id,sum(number) as num,sum(add_balance_price_total) as add_balance_price_total,sum(balance_total_price) as balance_total_price,sum(return_total_money) as return_total_money,sum(return_total_score) as return_total_score from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id . " group by deal_id"); foreach ($goods_list as $k => $v) { $sql = "update " . DB_PREFIX . "deal set buy_count = buy_count + " . $v['num'] . ",user_count = user_count + 1 where id=" . $v['deal_id'] . " and ((buy_count + " . $v['num'] . "<= max_bought) or max_bought = 0) " . " and time_status = 1 and buy_status <> 2"; $GLOBALS['db']->query($sql); //增加商品的发货量 $rs = $GLOBALS['db']->affected_rows(); if ($rs) { $affect_list[] = $v; //记录下更新成功的团购商品,用于回滚 } else { //失败成功,即过期支付,超量支付 $stock_status = false; break; } } } $return_money = 0; //非发券非配送的即时返还 $return_score = 0; //非发券非配送的即时返还 $use_score = 0; //积分商品所耗费的积分 if ($stock_status) { foreach ($goods_list as $k => $v) { $deal_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id = " . intval($v['deal_id'])); //统计商户销售额 $supplier_log = "ID:" . $deal_info['id'] . " " . $deal_info['sub_name'] . " 订单:" . $order_info['order_sn']; modify_supplier_account($v['balance_total_price'] + $v['add_balance_price_total'], $deal_info['supplier_id'], 0, $supplier_log); if ($deal_info['is_coupon'] == 0 && $deal_info['is_delivery'] == 0) { //更新订单中相关产品的消费状态 $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set consume_count = consume_count + 1 where order_id = " . $order_info['id'] . " and deal_id = " . $deal_info['id']); update_order_cache($order_info['id']); distribute_order($order_info['id']); modify_supplier_account($v['balance_total_price'] + $v['add_balance_price_total'], $deal_info['supplier_id'], 2, $supplier_log); //等结算金额增加 } else { modify_supplier_account($v['balance_total_price'] + $v['add_balance_price_total'], $deal_info['supplier_id'], 1, $supplier_log); //冻结资金 } //不发货不发券的实时返还 if ($deal_info['is_coupon'] == 0 && $deal_info['is_delivery'] == 0 && $v['buy_type'] == 0) { $return_money += $v['return_total_money']; $return_score += $v['return_total_score']; } if ($v['buy_type'] == 1) { $use_score += $v['return_total_score']; } $balance_price += $v['balance_total_price']; $add_balance_price += $v['add_balance_price_total']; //发券 if ($deal_info['is_coupon'] == 1) { if ($deal_info['deal_type'] == 1) { $deal_order_item_list = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_info['id'] . " and deal_id = " . $v['deal_id']); foreach ($deal_order_item_list as $item) { // for($i=0;$i<$item['number'];$i++) //按单 // { //需要发券 /** * 1. 先从已有团购券中发送 * 2. 无有未发送的券,自动发送 * 3. 发送状态的is_valid 都是 0, 该状态的激活在syn_deal_status中处理 */ /*修正后台手动建团购劵,购买的时候按单发送团购劵,数量不一致*/ $sql = "update " . DB_PREFIX . "deal_coupon set user_id=" . $order_info['user_id'] . ",order_id = " . $order_info['id'] . ",order_deal_id = " . $item['id'] . ",expire_refund = " . $deal_info['expire_refund'] . ",any_refund = " . $deal_info['any_refund'] . ",coupon_price = " . $item['total_price'] . ",coupon_score = " . $item['return_total_score'] . ",coupon_money = " . $item['return_total_money'] . ",add_balance_price = " . $item['add_balance_price'] . ",deal_type = " . $deal_info['deal_type'] . ",balance_price = " . $item['balance_total_price'] . " where deal_id = " . $v['deal_id'] . " and user_id = 0 " . " and is_delete = 0 order by id ASC limit 1"; $GLOBALS['db']->query($sql); $exist_coupon = $GLOBALS['db']->affected_rows(); if (!$exist_coupon) { //未发送成功,即无可发放的预设团购券 add_coupon($v['deal_id'], $order_info['user_id'], 0, '', '', 0, 0, $item['id'], $order_info['id']); } // } } } else { $deal_order_item_list = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_info['id'] . " and deal_id = " . $v['deal_id']); foreach ($deal_order_item_list as $item) { for ($i = 0; $i < $item['number']; $i++) { //需要发券 /** * 1. 先从已有团购券中发送 * 2. 无有未发送的券,自动发送 * 3. 发送状态的is_valid 都是 0, 该状态的激活在syn_deal_status中处理 */ $sql = "update " . DB_PREFIX . "deal_coupon set user_id=" . $order_info['user_id'] . ",order_id = " . $order_info['id'] . ",order_deal_id = " . $item['id'] . ",expire_refund = " . $deal_info['expire_refund'] . ",any_refund = " . $deal_info['any_refund'] . ",coupon_price = " . $item['unit_price'] . ",coupon_score = " . $item['return_score'] . ",coupon_money = " . $item['return_money'] . ",add_balance_price = " . $item['add_balance_price'] . ",deal_type = " . $deal_info['deal_type'] . ",balance_price = " . $item['balance_unit_price'] . " where deal_id = " . $v['deal_id'] . " and user_id = 0 " . " and is_delete = 0 limit 1"; $GLOBALS['db']->query($sql); $exist_coupon = $GLOBALS['db']->affected_rows(); if (!$exist_coupon) { //未发送成功,即无可发放的预设团购券 add_coupon($v['deal_id'], $order_info['user_id'], 0, '', '', 0, 0, $item['id'], $order_info['id']); } } } } } //发券结束 } //开始处理返还的积分或现金,此处返还不用发货不用配送不用发券的产品返还 require_once APP_ROOT_PATH . "system/model/user.php"; if ($return_money != 0) { $msg = sprintf($GLOBALS['lang']['ORDER_RETURN_MONEY'], $order_info['order_sn']); modify_account(array('money' => $return_money, 'score' => 0), $order_info['user_id'], $msg); } if ($return_score != 0) { $msg = sprintf($GLOBALS['lang']['ORDER_RETURN_SCORE'], $order_info['order_sn']); modify_account(array('money' => 0, 'score' => $return_score), $order_info['user_id'], $msg); send_score_sms($order_info['id']); send_score_mail($order_info['id']); } if ($use_score != 0) { $user_score = $GLOBALS['db']->getOne("select score from " . DB_PREFIX . "user where id = " . $order_info['user_id']); if ($user_score + $use_score < 0) { //积分不足,不能支付 $msg = $order_info['order_sn'] . "订单支付失败,积分不足"; $refund_money = $order_info['pay_amount']; if ($order_info['account_money'] > $refund_money) { $account_money_now = $order_info['account_money'] - $refund_money; } else { $account_money_now = 0; } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set account_money = " . $account_money_now . " where id = " . $order_info['id']); if ($order_info['ecv_money'] > $refund_money) { $ecv_money_now = $order_info['ecv_money'] - $refund_money; } else { $ecv_money_now = 0; } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set ecv_money = " . $ecv_money_now . " where id = " . $order_info['id']); if ($refund_money > 0) { modify_account(array('money' => $refund_money, 'score' => 0), $order_info['user_id'], $msg); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_money = refund_money + " . $refund_money . ",refund_amount = refund_amount + " . $refund_money . ",after_sale = 1,refund_status = 2 where id = " . $order_info['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 2 where order_id = " . $order_info['id']); order_log($order_info['order_sn'] . "积分不足," . format_price($refund_money) . "已退到会员余额", $order_info['id']); modify_statements("-" . $refund_money, 1, $order_info['order_sn'] . "积分不足,退款"); modify_statements($refund_money, 2, $order_info['order_sn'] . "积分不足,退款"); } else { order_log($order_info['order_sn'] . "积分不足", $order_info['id']); } require_once APP_ROOT_PATH . "system/model/deal_order.php"; update_order_cache($order_info['id']); over_order($order_info['id']); } else { modify_account(array('score' => $use_score), $order_info['user_id'], "积分商品兑换"); send_score_sms($order_info['id']); send_score_mail($order_info['id']); order_log($order_info['order_sn'] . "积分订单支付成功", $order_info['id']); send_msg($order_info['user_id'], "订单" . $order_info['order_sn'] . "兑换成功", "orderitem", $order_goods_list[0]['id']); if ($order_info['total_price'] > 0) { modify_statements($order_info['total_price'], 8, $order_info['order_sn'] . "订单成功付款"); } //增加营业额 } } else { //开始处理返利,只创建返利, 发放将与msg_list的自动运行一起执行 // $user_info = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."user where id = ".$order_info['user_id']); // //开始查询所购买的列表中支不支持促销 // $is_referrals = 1; //默认为返利 // foreach($goods_list as $k=>$v) // { // $is_referrals = $GLOBALS['db']->getOne("select is_referral from ".DB_PREFIX."deal where id = ".$v['deal_id']); // if($is_referrals == 0) // { // break; // } // } // if($user_info['referral_count']<app_conf("REFERRAL_LIMIT")&&$is_referrals == 1) // { // //开始返利给推荐人 // $parent_info = $GLOBALS['db']->getRow("select * from ".DB_PREFIX."user where id = ".$user_info['pid']); // if($parent_info) // { // if((app_conf("REFERRAL_IP_LIMIT")==1&&$parent_info['login_ip']!=CLIENT_IP)||app_conf("REFERRAL_IP_LIMIT")==0) //IP限制 // { // if(app_conf("INVITE_REFERRALS_TYPE")==0) //现金返利 // { // $referral_data['user_id'] = $parent_info['id']; //初返利的会员ID // $referral_data['rel_user_id'] = $user_info['id']; //被推荐且发生购买的会员ID // $referral_data['create_time'] = NOW_TIME; // $referral_data['money'] = app_conf("INVITE_REFERRALS"); // $referral_data['order_id'] = $order_info['id']; // $GLOBALS['db']->autoExecute(DB_PREFIX."referrals",$referral_data); //插入 // } // else // { // $referral_data['user_id'] = $parent_info['id']; //初返利的会员ID // $referral_data['rel_user_id'] = $user_info['id']; //被推荐且发生购买的会员ID // $referral_data['create_time'] = NOW_TIME; // $referral_data['score'] = app_conf("INVITE_REFERRALS"); // $referral_data['order_id'] = $order_info['id']; // $GLOBALS['db']->autoExecute(DB_PREFIX."referrals",$referral_data); //插入 // } // $GLOBALS['db']->query("update ".DB_PREFIX."user set referral_count = referral_count + 1 where id = ".$user_info['id']); // } // } // } //超出充值 if ($order_info['pay_amount'] > $order_info['total_price']) { require_once APP_ROOT_PATH . "system/model/user.php"; if ($order_info['total_price'] < 0) { $msg = sprintf($GLOBALS['lang']['MONEYORDER_INCHARGE'], $order_info['order_sn']); } else { $msg = sprintf($GLOBALS['lang']['OUTOFMONEY_INCHARGE'], $order_info['order_sn']); } $refund_money = $order_info['pay_amount'] - $order_info['total_price']; if ($order_info['account_money'] > $refund_money) { $account_money_now = $order_info['account_money'] - $refund_money; } else { $account_money_now = 0; } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set account_money = " . $account_money_now . " where id = " . $order_info['id']); if ($order_info['ecv_money'] > $refund_money) { $ecv_money_now = $order_info['ecv_money'] - $refund_money; } else { $ecv_money_now = 0; } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set ecv_money = " . $ecv_money_now . " where id = " . $order_info['id']); modify_account(array('money' => $refund_money, 'score' => 0), $order_info['user_id'], $msg); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_money = refund_money + " . $refund_money . ",refund_amount = refund_amount + " . $refund_money . " where id = " . $order_info['id']); order_log($order_info['order_sn'] . "订单超额支付," . format_price($refund_money) . "已退到会员余额", $order_info['id']); modify_statements("-" . $refund_money, 1, $order_info['order_sn'] . "订单超额"); modify_statements($refund_money, 2, $order_info['order_sn'] . "订单超额"); } modify_statements($order_info['total_price'], 8, $order_info['order_sn'] . "订单成功付款"); //增加营业额 $balance_total = $GLOBALS['db']->getOne("select sum(balance_total_price)+sum(add_balance_price_total) from " . DB_PREFIX . "deal_order_item where order_id = " . $order_info['id']); modify_statements($balance_total, 9, $order_info['order_sn'] . "订单成功付款"); //增加营业额中的成本 //生成抽奖 $lottery_list = $GLOBALS['db']->getAll("select d.id as did,doi.number from " . DB_PREFIX . "deal_order_item as doi left join " . DB_PREFIX . "deal_order as do on doi.order_id = do.id left join " . DB_PREFIX . "deal as d on doi.deal_id = d.id where d.is_lottery = 1 and do.id = " . $order_info['id']); $lottery_user = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . intval($order_info['user_id'])); //如为首次抽奖,先为推荐人生成抽奖号 $lottery_count = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "lottery where user_id = " . intval($order_info['user_id'])); if ($lottery_count == 0 && $lottery_user['pid'] != 0) { $lottery_puser = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where id = " . intval($lottery_user['pid'])); foreach ($lottery_list as $lottery) { $k = 0; do { if ($k > 10) { break; } $buy_count = $GLOBALS['db']->getOne("select buy_count from " . DB_PREFIX . "deal where id = " . $lottery['did']); $max_sn = $buy_count - $lottery['number'] + intval($GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "lottery where deal_id = " . intval($lottery['did']) . " and buyer_id <> 0 ")); //$max_sn = intval($GLOBALS['db']->getOne("select lottery_sn from ".DB_PREFIX."lottery where deal_id = '".$lottery['did']."' order by lottery_sn desc limit 1")); $sn = $max_sn + 1; $sn = str_pad($sn, "6", "0", STR_PAD_LEFT); $sql = "insert into " . DB_PREFIX . "lottery (`lottery_sn`,`deal_id`,`user_id`,`mobile`,`create_time`,`buyer_id`) select '" . $sn . "','" . $lottery['did'] . "'," . $lottery_puser['id'] . ",'" . $lottery_puser['lottery_mobile'] . "'," . NOW_TIME . "," . $order_info['user_id'] . " from dual where not exists( select * from " . DB_PREFIX . "lottery where deal_id = " . $lottery['did'] . " and lottery_sn = '" . $sn . "')"; $GLOBALS['db']->query($sql); send_lottery_sms(intval($GLOBALS['db']->insert_id())); $k++; } while (intval($GLOBALS['db']->insert_id()) == 0); } } foreach ($lottery_list as $lottery) { for ($i = 0; $i < $lottery['number']; $i++) { $k = 0; do { if ($k > 10) { break; } $buy_count = $GLOBALS['db']->getOne("select buy_count from " . DB_PREFIX . "deal where id = " . $lottery['did']); $max_sn = $buy_count - $lottery['number'] + intval($GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "lottery where deal_id = " . intval($lottery['did']) . " and buyer_id <> 0 ")); //$max_sn = intval($GLOBALS['db']->getOne("select lottery_sn from ".DB_PREFIX."lottery where deal_id = '".$lottery['did']."' order by lottery_sn desc limit 1")); $sn = $max_sn + $i + 1; $sn = str_pad($sn, "6", "0", STR_PAD_LEFT); $sql = "insert into " . DB_PREFIX . "lottery (`lottery_sn`,`deal_id`,`user_id`,`mobile`,`create_time`,`buyer_id`) select '" . $sn . "','" . $lottery['did'] . "'," . $order_info['user_id'] . ",'" . $lottery_user['mobile'] . "'," . NOW_TIME . ",0 from dual where not exists( select * from " . DB_PREFIX . "lottery where deal_id = " . $lottery['did'] . " and lottery_sn = '" . $sn . "')"; $GLOBALS['db']->query($sql); send_lottery_sms(intval($GLOBALS['db']->insert_id())); $k++; } while (intval($GLOBALS['db']->insert_id()) == 0); } } send_msg($order_info['user_id'], "订单" . $order_info['order_sn'] . "付款成功", "orderitem", $order_goods_list[0]['id']); } } else { //开始模拟事务回滚 foreach ($affect_attr_list as $k => $v) { $sql = "update " . DB_PREFIX . "attr_stock set buy_count = buy_count - " . $v['number'] . " where deal_id = " . $v['deal_id'] . " and locate(attr_str,'" . $v['attr_str'] . "') > 0 "; $GLOBALS['db']->query($sql); //回滚已发的货量 } foreach ($affect_list as $k => $v) { $sql = "update " . DB_PREFIX . "deal set buy_count = buy_count - " . $v['num'] . ",user_count = user_count - 1 where id=" . $v['deal_id']; $GLOBALS['db']->query($sql); //回滚已发的货量 } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 2 where order_id = " . $order_info['id']); //超出充值 require_once APP_ROOT_PATH . "system/model/user.php"; $msg = sprintf($GLOBALS['lang']['OUTOFSTOCK_INCHARGE'], $order_info['order_sn']); modify_account(array('money' => $order_info['total_price'], 'score' => 0), $order_info['user_id'], $msg); order_log($order_info['order_sn'] . "订单库存不足," . format_price($order_info['total_price']) . "已退到会员余额", $order_info['id']); modify_statements("-" . $order_info['total_price'], 1, $order_info['order_sn'] . "订单库存不足"); modify_statements($order_info['total_price'], 2, $order_info['order_sn'] . "订单库存不足"); //将订单的extra_status 状态更新为2,并自动退款 $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set extra_status = 2, after_sale = 1, refund_money = pay_amount where id = " . intval($order_info['id'])); update_order_cache($order_info['id']); //记录退款的订单日志 $log['log_info'] = $msg; $log['log_time'] = NOW_TIME; $log['order_id'] = intval($order_info['id']); $GLOBALS['db']->autoExecute(DB_PREFIX . "deal_order_log", $log); } //同步所有未过期的团购状态 foreach ($goods_list as $item) { syn_deal_status($item['deal_id'], true); } auto_over_status($order_id); //自动结单 } else { //订单充值 // $GLOBALS['db']->query("update ".DB_PREFIX."deal_order set order_status = 1 where id = ".$order_info['id']); //充值单自动结单 require_once APP_ROOT_PATH . "system/model/user.php"; $msg = sprintf($GLOBALS['lang']['USER_INCHARGE_DONE'], $order_info['order_sn']); modify_account(array('money' => $order_info['total_price'] - $order_info['payment_fee'], 'score' => 0), $order_info['user_id'], $msg); modify_statements("-" . $order_info['total_price'], 1, $order_info['order_sn'] . "会员充值"); modify_statements($order_info['total_price'], 2, $order_info['order_sn'] . "会员充值,含手续费"); send_msg($order_info['user_id'], "成功充值" . format_price($order_info['total_price'] - $order_info['payment_fee']), "notify", $order_id); auto_over_status($order_id); //自动结单 } }
public function index() { $id = intval($GLOBALS['request']['id']); if ($id == '') { $root['status'] = 0; $root['info'] = '订单号不能为空'; } /*设置发货开始*/ $silent = intval($_REQUEST['silent']); $order_id = $id; $order_items = $GLOBALS['db']->getAll("select id from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_items as $k => $v) { $order_deals[] = $v['id']; } $delivery_sn = $_REQUEST['delivery_sn']; $express_id = intval($_REQUEST['express_id']); $memo = $_REQUEST['memo']; if (!$order_deals) { } else { $deal_names = array(); foreach ($order_deals as $order_deal_id) { $deal_info = $GLOBALS['db']->getRow("select d.*,doi.id as doiid from " . DB_PREFIX . "deal as d left join " . DB_PREFIX . "deal_order_item as doi on doi.deal_id = d.id where doi.id = " . $order_deal_id); $deal_name = $deal_info['sub_name']; array_push($deal_names, $deal_name); $rs = make_delivery_notice($order_id, $order_deal_id, $delivery_sn, $memo, $express_id); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set delivery_status = 1,is_arrival = 0 where id = " . $order_deal_id); update_balance($order_deal_id, $deal_info['id']); } } $deal_names = implode(",", $deal_names); //开始同步订单的发货状态 $order_deal_items = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_deal_items as $k => $v) { if ($GLOBALS['db']->getOne("select is_delivery from " . DB_PREFIX . "Deal where id = " . $v['deal_id']) == 0) { unset($order_deal_items[$k]); } } $delivery_deal_items = $order_deal_items; foreach ($delivery_deal_items as $k => $v) { if ($v['delivery_status'] == 0) { unset($delivery_deal_items[$k]); } } if (count($delivery_deal_items) == 0 && count($order_deal_items) != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 0 where id = " . $order_id); //未发货 } elseif (count($delivery_deal_items) > 0 && count($order_deal_items) != 0 && count($delivery_deal_items) < count($order_deal_items)) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 1 where id = " . $order_id); //部分发 } else { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 2 where id = " . $order_id); //全部发 } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set update_time = " . time() . ",is_refuse_delivery=0 where id = " . $order_id); //全部发 $refund_item_count = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_order_item where (refund_status = 1 or is_arrival = 2) and order_id = " . $order_id); $coupon_item_count = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_coupon where refund_status = 1 and order_id = " . $order_id); if ($refund_item_count == 0 && $coupon_item_count == 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 0,is_refuse_delivery=0 where id = " . $order_id); } //查询快递名 $express_name = $GLOBALS['db']->getAll("select name from " . DB_PREFIX . "Express where id = " . $express_id); require_once APP_ROOT_PATH . "system/model/deal_order.php"; order_log("发货成功" . $express_name . $delivery_sn . $_REQUEST['memo'], $order_id); update_order_cache($order_id); distribute_order($order_id); } /*设置发货结束*/ $result = $GLOBALS['db']->autoExecute(DB_PREFIX . "deal_order", array("service_start_time" => time()), "UPDATE", "id=" . intval($id)); // 更新服务时间为当前时间 if ($result) { $root['status'] = 1; $root['info'] = '服务开始'; } output($root); }
public function do_delivery() { $s_account_info = $GLOBALS['account_info']; $supplier_id = intval($s_account_info['supplier_id']); require_once APP_ROOT_PATH . "system/model/deal_order.php"; $order_item_table_name = get_supplier_order_item_table_name($supplier_id); $order_table_name = get_supplier_order_table_name($supplier_id); $id = intval($_REQUEST['id']); //发货商品的ID $delivery_sn = strim($_REQUEST['delivery_sn']); $memo = strim($_REQUEST['memo']); $express_id = intval($_REQUEST['express_id']); $location_id = intval($_REQUEST['location_id']); $order_id = $GLOBALS['db']->getOne("select order_id from " . $order_item_table_name . " where id = " . $id); $order_info = $GLOBALS['db']->getRow("select * from " . $order_table_name . " where id = '" . $order_id . "'"); if (empty($delivery_sn)) { $data['status'] = 0; $data['info'] = "请输入快递单号"; ajax_return($data); } $item = $GLOBALS['db']->getRow("select doi.* from " . $order_item_table_name . " as doi left join " . DB_PREFIX . "deal_location_link as l on doi.deal_id = l.deal_id where doi.id = " . $id . " and l.location_id in (" . implode(",", $s_account_info['location_ids']) . ")"); if ($item) { $rs = make_delivery_notice($order_id, $id, $delivery_sn, $memo, $express_id, $location_id); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set delivery_status = 1 where id = " . $id); } send_delivery_mail($delivery_sn, $item['name'], $order_id); send_delivery_sms($delivery_sn, $item['name'], $order_id); //开始同步订单的发货状态 $order_deal_items = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_deal_items as $k => $v) { if ($v['delivery_status'] == 5) { unset($order_deal_items[$k]); } } $delivery_deal_items = $order_deal_items; foreach ($delivery_deal_items as $k => $v) { if ($v['delivery_status'] == 0) { unset($delivery_deal_items[$k]); } } if (count($delivery_deal_items) == 0 && count($order_deal_items) != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 0,update_time = '" . NOW_TIME . "' where id = " . $order_id); //未发货 } elseif (count($delivery_deal_items) > 0 && count($order_deal_items) != 0 && count($delivery_deal_items) < count($order_deal_items)) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 1,update_time = '" . NOW_TIME . "' where id = " . $order_id); //部分发 } else { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 2,update_time = '" . NOW_TIME . "' where id = " . $order_id); //全部发 } order_log($item['name'] . "发货了,发货单号:" . $delivery_sn, $order_id); update_order_cache($order_id); distribute_order($order_id); send_msg($order_info['user_id'], $item['name'] . "发货了,发货单号:" . $delivery_sn, "orderitem", $item['id']); $data['status'] = 1; $data['info'] = "发货成功"; ajax_return($data); } else { $data['status'] = 0; $data['info'] = "非法的数据"; ajax_return($data); } }
/** * 退款申请 */ public function do_refund() { global_run(); if (check_save_login() != LOGIN_STATUS_LOGINED) { $data['status'] = 1000; ajax_return($data); } else { $did = intval($_REQUEST['did']); $cid = intval($_REQUEST['cid']); $content = strim($_REQUEST['content']); if (empty($content)) { $data['status'] = 0; $data['info'] = "请填写退款原因"; ajax_return($data); } if ($did) { //退单 $deal_order_item = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order_item where id = " . $did); $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = '" . $deal_order_item['order_id'] . "' and order_status = 0 and user_id = " . $GLOBALS['user_info']['id']); if ($order_info) { if ($deal_order_item['delivery_status'] == 0 && $order_info['pay_status'] == 2 && $deal_order_item['is_refund'] == 1) { if ($deal_order_item['refund_status'] == 0) { //执行退单,标记:deal_order_item表与deal_order表, $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 1 where id = " . $deal_order_item['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 1 where id = " . $deal_order_item['order_id']); $msg = array(); $msg['rel_table'] = "deal_order"; $msg['rel_id'] = $deal_order_item['order_id']; $msg['title'] = "退款申请"; $msg['content'] = "退款申请:" . $content; $msg['create_time'] = NOW_TIME; $msg['user_id'] = $GLOBALS['user_info']['id']; $GLOBALS['db']->autoExecute(DB_PREFIX . "message", $msg); update_order_cache($deal_order_item['order_id']); order_log($deal_order_item['sub_name'] . "申请退款,等待审核", $deal_order_item['order_id']); require_once APP_ROOT_PATH . "system/model/deal_order.php"; distribute_order($order_info['id']); $data['status'] = true; $data['info'] = "退款申请已提交,请等待审核"; ajax_return($data); } else { $data['status'] = 0; $data['info'] = "不允许退款"; ajax_return($data); } } else { $data['status'] = 0; $data['info'] = "非法操作"; ajax_return($data); } } else { $data['status'] = 0; $data['info'] = "非法操作"; ajax_return($data); } } elseif ($cid) { //退券 $coupon = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_coupon where user_id = " . $GLOBALS['user_info']['id'] . " and id = " . $cid); if ($coupon) { if ($coupon['refund_status'] == 0 && $coupon['confirm_time'] == 0) { if ($coupon['any_refund'] == 1 || $coupon['expire_refund'] == 1 && $coupon['end_time'] > 0 && $coupon['end_time'] < NOW_TIME) { //执行退券 $GLOBALS['db']->query("update " . DB_PREFIX . "deal_coupon set refund_status = 1 where id = " . $coupon['id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set refund_status = 1 where id = " . $coupon['order_deal_id']); $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 1 where id = " . $coupon['order_id']); $deal_order_item = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order_item where id = " . $coupon['order_deal_id']); $msg = array(); $msg['rel_table'] = "deal_order"; $msg['rel_id'] = $coupon['order_id']; $msg['title'] = "退款申请"; $msg['content'] = $content; $msg['create_time'] = NOW_TIME; $msg['user_id'] = $GLOBALS['user_info']['id']; $GLOBALS['db']->autoExecute(DB_PREFIX . "message", $msg); update_order_cache($coupon['order_id']); order_log($deal_order_item['sub_name'] . "申请退一张团购券,等待审核", $coupon['order_id']); require_once APP_ROOT_PATH . "system/model/deal_order.php"; distribute_order($coupon['order_id']); $data['status'] = true; $data['info'] = "退款申请已提交,请等待审核"; ajax_return($data); } else { $data['status'] = 0; $data['info'] = "不允许退款"; ajax_return($data); } } else { $data['status'] = 0; $data['info'] = "非法操作"; ajax_return($data); } } else { $data['status'] = 0; $data['info'] = "非法操作"; ajax_return($data); } } else { $data['status'] = 0; $data['info'] = "非法操作"; ajax_return($data); } } }