function setStatus($status, $remark = '') { global $db, $tblprefix, $timestamp, $onlineautosaving; switch ($this->status = $status) { case PAY_FINISHED: //交易完成 $remark || ($remark = '交易完成'); break; case PAY_FAIL: //交易失败 $remark || ($remark = '交易失败'); break; case PAY_WAIT_PAY: //等待付款 $remark || ($remark = '等待付款'); break; case PAY_WAIT_GOODS: //等待发货 $remark || ($remark = '等待发货'); break; case PAY_CONFIRM_GOODS: //等待买家确认收货 $remark || ($remark = '等待买家确认收货'); break; default: $this->message(array('title' => '调用错误', 'content' => "未定义的交易状态 “{$status”!}")); } switch ($this->by) { case 'orders': $upsql = ",remark='" . addslashes($remark) . "'"; ($status == PAY_WAIT_GOODS || $status == PAY_FINISHED && !$this->totalfee) && ($upsql .= ",payed=totalfee"); $db->query("UPDATE {$tblprefix}orders SET state={$status},updatedate={$timestamp}{$upsql} WHERE ({$status}<0 OR state<{$status}) AND oid='{$this->order_id}'"); if ($ret = $db->affected_rows()) { $query = $db->query("SELECT aid,tocid as cid,price,nums FROM {$tblprefix}purchases WHERE oid='{$this->order_id}'"); $nums = 0; $aedit = new cls_arcedit(); while ($row = $db->fetch_array($query)) { $nums += $row['nums']; if ($row['cid']) { //商家商品 } else { //网站商品 $aedit->init(); $aedit->set_aid($row['aid']); $aedit->arc_nums('orders', $row['nums']); $aedit->arc_nums('ordersum', $row['price'] * $row['nums'], 1); } } $user = new cls_userinfo(); $user->activeuser($this->mid, 1); $user->basedeal('purchase', 1, $nums, 1); } break; case 'pays': $upsql = $onlineautosaving ? ",transdate={$timestamp}" : ''; $db->query("UPDATE {$tblprefix}pays SET receivedate={$timestamp}{$upsql} WHERE receivedate=0 AND pid='{$this->order_id}'"); $ret = $db->affected_rows(); if ($ret && $upsql) { $user = new cls_userinfo(); $user->activeuser($this->mid); $user->updatecrids(array(0 => $this->totalfee), 1); } break; default: $this->message(array('title' => '调用错误', 'content' => "未定义的交易!")); } return $ret; }
$curuser->info['currency0'] < $order['totalfee'] && mcmessage('pay_no_money'); $curuser->updatecrids(array(0 => -$order['totalfee']), 1, lang('log_order_pay', $order['ordersn'])); $order['tomid'] && $user->updatecrids(array(0 => $order['totalfee']), 1, lang('log_order_rev', $order['ordersn'])); $sqlstr .= ",payed={$order['totalfee']}"; $db->query("UPDATE {$tblprefix}orders SET {$sqlstr},updatedate='{$timestamp}' WHERE oid='{$oid}'"); $query = $db->query("SELECT aid,tocid as cid,price,nums FROM {$tblprefix}purchases WHERE oid='{$oid}'"); $nums = 0; $aedit = new cls_arcedit(); while ($row = $db->fetch_array($query)) { $nums += $row['nums']; if ($row['cid']) { //商家商品 } else { //网站商品 // $db->query("UPDATE {$tblprefix}archives SET orders=$row[nums],ordersum=$sum WHERE aid=$row[aid]"); $aedit->init(); $aedit->set_aid($row['aid']); $aedit->arc_nums('orders', $row['nums']); $aedit->arc_nums('ordersum', $row['price'] * $row['nums'], 1); } } $curuser->basedeal('purchase', 1, $nums, 1); mcmessage('orderpayfinish'); } else { require_once M_ROOT . 'paygate/pay_base.php'; switch ($ordernew['paymode']) { //各种付款方式 case 2: //支付宝 if (!in_array('', $pays[2])) { $pay = new pay_base('alipay');
function updatecopy($mode = 0) { //当更新文档时,同时更新其它的副本。 global $cotypes, $timestamp, $db, $tblprefix, $arc; if (!$mode) { return false; } $cpids = array(); $naid = $this->aid; $query = $db->query("SELECT aid FROM {$tblprefix}archives WHERE aid != '{$naid}' AND cpid='" . $this->archive['cpid'] . "'"); while ($row = $db->fetch_array($query)) { $cpids[] = $row['aid']; } if (!$cpids) { return false; } $this->init(); $this->set_aid($naid); $this->detail_data(); $archivenew =& $this->archive; $archivenew = maddslashes($archivenew); $chid = $archivenew['chid']; $fields = read_cache('fields', $chid); $aedit = new cls_arcedit(); foreach ($cpids as $aid) { $aedit->set_aid($aid); $aedit->detail_data(); $aedit->updatefield('rpmid', $archivenew['rpmid'], 'main'); $aedit->updatefield('dpmid', $archivenew['dpmid'], 'main'); $aedit->updatefield('salecp', $archivenew['salecp'], 'main'); $aedit->updatefield('fsalecp', $archivenew['fsalecp'], 'main'); $aedit->sale_define(); $aedit->updatefield('arctpls', $archivenew['arctpls'], 'sub'); $aedit->updatefield('jumpurl', $archivenew['jumpurl'], 'sub'); foreach ($fields as $k => $v) { if ($v['available'] && !$v['isfunc'] && (!in_array($k, array('subject', 'keywords', 'thumb', 'abstract')) || $mode == 1)) { if (!empty($v['istxt'])) { $txtname = saveastxt(stripslashes($archivenew[$k]), $aedit->namepres[$k]); $aedit->updatefield($k, $txtname, $v['tbl']); } else { $aedit->updatefield($k, $archivenew[$k], $v['tbl']); if ($arr = multi_val_arr($archivenew[$k], $v)) { foreach ($arr as $x => $y) { $aedit->updatefield($k . '_' . $x, $y, $v['tbl']); } } } } } $aedit->updatedb(); if ($this->channel['autostatic']) { arc_static($aid); unset($arc); } $aedit->init(); } return true; }