foreach (array(0 => 'next', 1 => 'currency', 2 => 'alipay', 3 => 'tenpay') as $k => $v) { $cfg_paymode & 1 << $k && ($k < 2 || !in_array('', $pays[$k])) && ($pmodearr[$k] = lang("pay{$v}")); } empty($pmodearr) && mcmessage('nopaymode'); if (submitcheck('borderpay')) { //确认付款 $order['state'] == 1 || !$order['state'] && $cfg_ordermode || mcmessage('cheordcanmod', $forward); empty($ordernew['paymode']) && @$ordernew['paymode'] !== '0' && mcmessage('paymodecerr', M_REFERER); empty($pmodearr[$ordernew['paymode']]) && mcmessage('paymodeerr', M_REFERER); $sqlstr = "state=-1,paymode={$ordernew['paymode']}"; //-1为订单完成状态 if ($ordernew['paymode'] == 1) { //现金帐户 $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']);
} $ispre = 1; } else { //自动扣值,当前会员扣值及向出售者支付积分 if (!$curuser->crids_enough($crids['total'])) { message(lang('subarcwantpaycur') . $cridstr . lang('younosubsarchivewantenoughcur')); } $curuser->updatecrids($crids['total'], 0, lang('subscribearchive')); $curuser->payrecord($arc->aid, 0, $cridstr, 1); if (!empty($crids['sale'])) { $actuser = new cls_userinfo(); $actuser->activeuser($arc->archive['mid']); foreach ($crids['sale'] as $k => $v) { $crids['sale'][$k] = -$v; } $actuser->updatecrids($crids['sale'], 1, lang('salearchive')); unset($actuser); } } } //读取缓存页面 if (!$enablestatic && $cache1circle) { $cachefile = htmlcac_dir($ispre ? 'pre' : 'arc', date('Ym', $arc->archive['createdate']), 1) . cac_namepre($arc->aid) . '_' . $page . '.php'; if (is_file($cachefile) && filemtime($cachefile) > $timestamp - $cache1circle * 60) { mexit(read_htmlcac($cachefile)); } } //分析模板来源 $tplname = $ispre ? $pretpl : arc_tplname($addno, $arc->archive['arctpls'], $arc->channel['arctpls']); !$tplname && message('definereltem'); $arc->detail_data();
function follow_dynamic($aid = 0, $mode = 'down', $temparr = array()) { global $db, $tblprefix, $arc, $sptpls, $memberid, $sid, $timestamp, $cms_abs, $cache1circle, $currencys, $curuser, $templatedir, $btags, $mconfigs, $_mp, $_actid, $_midarr, $_a_vars, $_a_var, $mpnav, $mptitle; @extract($mconfigs, EXTR_SKIP); $arc->arcid($aid); if (empty($arc->aid)) { message(lang('confchoosarchi')); } !$arc->archive['checked'] && message(lang('poinarchnoch')); switch_cache($arc->archive['sid']); $sid = $arc->archive['sid']; if_siteclosed($sid); if (!arc_allow($arc->archive, 'down')) { message(lang('noarchivbrowpermis')); } if ($crids = $arc->arc_crids(1)) { //需要对当前用户扣值 $cridstr = ''; foreach ($crids['total'] as $k => $v) { $cridstr .= ($cridstr ? ',' : '') . abs($v) . $currencys[$k]['unit'] . $currencys[$k]['cname']; } $commu = read_cache('commu', 8); if (empty($commu['setting']['autoatm'])) { //不自动扣值的情况:提示出订阅链接,选择是否订阅 message(lang('subattachwanpaycur') . $cridstr . "<br><br><a href=\"{$cms_abs}tools/subscribe.php?aid={$aid}&isatm=1\">>>" . lang('subscribe') . "</a>"); } else { //自动扣值,当前会员扣值及向出售者支付积分 if (!$curuser->crids_enough($crids['total'])) { message(lang('subattachwanpaycur') . $cridstr . lang('younosuatwaencur')); } $curuser->updatecrids($crids['total'], 0, lang('subsattach')); $curuser->payrecord($arc->aid, 1, $cridstr, 1); if (!empty($crids['sale'])) { $actuser = new cls_userinfo(); $actuser->activeuser($arc->archive['mid']); foreach ($crids['sale'] as $k => $v) { $crids['sale'][$k] = -$v; } $actuser->updatecrids($crids['sale'], 1, lang('saleattach')); unset($actuser); } } } $arc->detail_data(); $_da =& $arc->archive; arc_parse($_da); if (empty($temparr['tmode'])) { if ($temp = @unserialize($_da[$temparr['tname']])) { $temp = @$temp[$temparr['fid']]; } } else { $temp = @explode('#', $arc->archive[$temparr['tname']]); } $_da['url'] = view_atmurl(@$temp['remote']); $_da['player'] = @$temp['player']; unset($temp); empty($_da['url']) && message(lang('noattach')); save_nums($aid, $mode); //统计下载或播放数 if (!($tplname = $sptpls[$mode])) { follow_notpl($mode, $_da['url'], $_da['player']); } if ($mode == 'down') { $auth = authcode($memberid . "\t" . $aid . "\t" . $temparr['tname'] . "\t" . $temparr['tmode'] . "\t" . $temparr['fid'], 'ENCODE'); $_da['trueurl'] = $cms_abs . "tools/down.php?auth={$auth}&aid=" . $arc->aid . "&tname={$temparr['tname']}&tmode={$temparr['tmode']}&fid={$temparr['fid']}"; //真实下载地址 } elseif ($cache1circle) { $auth = authcode($temparr['tname'] . "\t" . $temparr['tmode'] . "\t" . $temparr['fid'], 'ENCODE'); $cachefile = htmlcac_dir('fw', date('Ym', $arc->archive['createdate']), 1) . cac_namepre($arc->aid, $arc->archive['createdate']) . '_' . $auth . '.php'; if (is_file($cachefile) && filemtime($cachefile) > $timestamp - $cache1circle * 60) { mexit(read_htmlcac($cachefile)); } } _aenter($_da, 1, array('url', 'player')); @extract($btags); extract($_da, EXTR_OVERWRITE); tpl_refresh($tplname); @(include M_ROOT . "template/{$templatedir}/pcache/{$tplname}.php"); $_content = ob_get_contents(); ob_clean(); if ($cache1circle && $mode != 'down') { save_htmlcac($_content, $cachefile); } mexit($_content); }
function cms_spread($uid, $mode = 0) { global $db, $tblprefix, $onlineip, $timestamp, $curuser, $m_cookie; if (empty($uid) && $mode == 1) { $uid = empty($m_cookie['spread_uid']) ? '' : $m_cookie['spread_uid']; } else { $uid = trim($uid); } if (empty($uid) || !($commu = read_cache('commu', 9)) || empty($commu['available']) || empty($commu['setting'][$mode])) { return; } $user = new cls_userinfo(); $user->activeuserbyname($uid); if (!($mid = $user->info['mid']) || $mid == $curuser->info['mid']) { return; } $s =& $commu['setting'][$mode]; $ip = ip2long($onlineip); $time = getdate($timestamp); $time = mktime(0, 0, 0, $time['mon'], $time['mday'], $time['year']); $record = $db->result_one("SELECT COUNT(*) FROM {$tblprefix}spreads WHERE mid='{$mid}' AND ip={$ip} AND mode={$mode} AND time>{$time}"); if ($s['value'] && (!$s['count'] || $s['count'] > $db->result_one("SELECT COUNT(*) FROM {$tblprefix}spreads WHERE mid='{$mid}' AND time>{$time}")) && !$record) { $user->updatecrids(array($s['crid'] => $s['value']), 1); } $record || $db->query("INSERT INTO {$tblprefix}spreads(mid,ip,mode,time) VALUES('{$mid}',{$ip},{$mode},{$timestamp})"); $mode ? mclearcookie('spread_uid') : msetcookie('spread_uid', $uid); }
} if (!empty($arcdeal['delete'])) { $db->query("DELETE FROM {$tblprefix}pays WHERE pid " . multi_str($selectid) . " AND (receivedate=0 OR transdate>0)", 'SILENT'); } else { if (!empty($arcdeal['receive'])) { $db->query("UPDATE {$tblprefix}pays SET receivedate='" . (empty($arcreceive) ? 0 : $timestamp) . "' WHERE pid " . multi_str($selectid) . " AND transdate=0", 'SILENT'); } if (!empty($arcdeal['trans'])) { $auser = new cls_userinfo(); $query = $db->query("SELECT * FROM {$tblprefix}pays WHERE pid " . multi_str($selectid)); while ($item = $db->fetch_array($query)) { if (!$item['amount'] || !$item['receivedate'] || $item['transdate']) { continue; } $auser->activeuser($item['mid']); $auser->updatecrids(array(0 => $item['amount']), 1, lang('cashsav')); $db->query("UPDATE {$tblprefix}pays SET transdate='{$timestamp}' WHERE pid='{$item['pid']}'", 'SILENT'); $auser->init(); } unset($actuser); } } if (!empty($select_all)) { $npage++; if ($npage <= $pages) { $fromid = min($selectid); $transtr = ''; $transtr .= "&select_all=1"; $transtr .= "&pages={$pages}"; $transtr .= "&npage={$npage}"; $transtr .= "&barcsedit=1";
$arc = new cls_archive(); !$arc->arcid($aid) && cumessage('choosearchive'); !$arc->archive['checked'] && cumessage('poinarcnoche'); switch_cache($arc->archive['sid']); $sid = $arc->archive['sid']; $stritem = $isatm ? 'attachment' : 'archive'; if (!($crids = $arc->arc_crids($isatm))) { cumessage("youalrpurchasestritem", '', $stritem); } $cridstr = ''; foreach ($crids['total'] as $k => $v) { $cridstr .= ($cridstr ? ',' : '') . abs($v) . $currencys[$k]['unit'] . $currencys[$k]['cname']; } if (!$curuser->crids_enough($crids['total'])) { cumessage('younopurcstriwanenocurr', '', $stritem); } $curuser->updatecrids($crids['total'], 0, lang("purchasestritem", $stritem)); $curuser->payrecord($arc->aid, $isatm, $cridstr, 1); if (!empty($crids['sale'])) { $actuser = new cls_userinfo(); $actuser->activeuser($arc->archive['mid']); foreach ($crids['sale'] as $k => $v) { $crids['sale'][$k] = -$v; } $actuser->updatecrids($crids['sale'], 1, lang("salestritem", $stritem)); unset($actuser); } cumessage($inajax ? 'succeed' : 'operatesucceed'); } else { include M_ROOT . $commu['ucadd']; }
if ($aedit->archive['closed'] || $aedit->archive['finishdate'] && $aedit->archive['finishdate'] < $timestamp) { mcmessage('questionclose', M_REFERER); } if (empty($currencynew)) { mcmessage('chooseanswer', M_REFERER); } $auser = new cls_userinfo(); $sparenew = $aedit->archive['spare']; foreach ($currencynew as $k => $v) { $v = max(0, intval($v)); $v = $sparenew > $v ? $v : max($sparenew, $v); $sqlstr = "checked='" . (empty($selectid[$k]) ? 0 : 1) . "'"; if ($v) { $row = $db->fetch_one("SELECT * FROM {$tblprefix}answers WHERE cid={$k}"); $auser->activeuser($row['mid']); $auser->updatecrids(array($row['crid'] => $v), 1, 'answer'); $sqlstr .= ",currency=currency+{$v}"; $sparenew -= $v; $auser->init(); } $db->query("UPDATE {$tblprefix}answers SET {$sqlstr} WHERE cid={$k}"); } unset($auser); $adopts = $db->result_one("SELECT COUNT(*) FROM {$tblprefix}answers WHERE aid='{$aid}' AND checked=1"); $aedit->updatefield('adopts', $adopts, 'main'); $aedit->updatefield('spare', $sparenew, 'sub'); $aedit->updatedb(); mcmessage('answereditfinish', M_REFERER); } } else { include M_ROOT . $u_tplname;
function showlist() { global $db, $tblprefix, $curuser, $eid, $atpp, $page, $mid, $mname, $checked, $dmode, $date1, $date2; if ($eid) { return $this->isadmin ? $this->check() : ($eid == 'new' ? $this->addnew() : $this->show()); } if (!submitcheck('bextedit')) { if (defined('M_MCENTER')) { $css = array('L' => 'item2', 'R' => 'item right', 'C' => 'item'); $membercname = lang('membercname'); $checkstate = lang('checkstate'); } else { $css = array('L' => 'txtL', 'R' => 'txtR', 'C' => 'txtC'); $membercname = lang('member_cname'); $checkstate = lang('check_state'); } $page = !empty($page) ? max(1, intval($page)) : 1; submitcheck('bfilter') && ($page = 1); if ($this->isadmin) { $wheresql = ' 1=1'; $u_lists = array('mname', 'integral', 'total', 'rate', 'checkdate', 'createdate', 'view'); } else { $wheresql = " mid={$curuser->info['mid']}"; $u_lists = array('integral', 'total', 'rate', 'checkdate', 'createdate', 'view'); } $mname && ($wheresql .= " AND mname LIKE '%" . str_replace(array(' ', '*'), '%', addcslashes($mname, '%_')) . "%'"); isset($checked) || ($checked = '-1'); $checked != '-1' && ($wheresql .= ' AND checkdate' . ($checked ? '!' : '') . '=0'); $datefield = $dmode ? 'checkdate' : 'createdate'; if ($date1 && preg_match("/\\s*(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s+(\\d{1,2}):(\\d{1,2}):(\\d{1,2}))?\\s*\$/", $date1, $match)) { $date = mktime(empty($match[4]) ? 0 : $match[4], empty($match[5]) ? 0 : $match[5], empty($match[6]) ? 0 : $match[6], $match[2], $match[3], $match[1]); $date && $date > 0 && ($wheresql .= " AND {$datefield}>='{$date}'"); } if ($date2 && preg_match("/\\s*(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s+(\\d{1,2}):(\\d{1,2}):(\\d{1,2}))?\\s*\$/", $date2, $match)) { $date = mktime(empty($match[4]) ? 24 : $match[4], empty($match[5]) ? 59 : $match[5], empty($match[6]) ? 59 : $match[6], $match[2], $match[3], $match[1]); $date && $date > 0 && ($wheresql .= " AND {$datefield}<='{$date}'"); } echo form_str('extract_list', "?{$_SERVER['QUERY_STRING']}"); if ($this->isadmin) { //搜索区块 tabheader_e(); echo "<tr><td colspan=\"2\" class=\"txt txtleft\">"; //关键词固定显示 echo $membercname . " <input class=\"text\" name=\"mname\" type=\"text\" value=\"{$mname}\" size=\"8\" style=\"vertical-align: middle;\"> "; $checkarr = array('-1' => lang('nolimit'), '0' => lang('nocheck'), '1' => lang('checked')); echo "<select style=\"vertical-align: middle;\" name=\"checked\">" . makeoption($checkarr, $checked) . "</select> "; $dmodearr = array('0' => lang('needtime'), '1' => lang('checkdate')); echo "<select style=\"vertical-align: middle;\" name=\"dmode\">" . makeoption($dmodearr, $dmode) . "</select> " . "<input class=\"text\" id=\"extract_date1\" name=\"date1\" type=\"text\" value=\"{$date1}\" onclick=\"ShowCalendar(this.id);\" style=\"vertical-align: middle;width:120px\"> - " . "<input class=\"text\" id=\"extract_date2\" name=\"date2\" type=\"text\" value=\"{$date2}\" onclick=\"ShowCalendar(this.id);\" style=\"vertical-align: middle;width:120px\"> " . "<input class=\"btn\" type=\"submit\" name=\"bfilter\" id=\"bfilter\" value=\"" . lang('filter0') . "\"> " . "</td></tr>"; tabfooter(); } $pagetmp = $page; do { $query = $db->query("SELECT * FROM {$tblprefix}extracts WHERE {$wheresql} ORDER BY {$datefield} DESC LIMIT " . ($pagetmp - 1) * $atpp . ",{$atpp}"); $pagetmp--; } while (!$db->num_rows($query) && $pagetmp); $count = $db->result_one("SELECT count(*) FROM {$tblprefix}extracts WHERE {$wheresql}"); $view = lang('message'); tabheader(lang('extract_list') . ($this->isadmin ? '' : " [<a href=\"?{$_SERVER['QUERY_STRING']}&eid=new\" onclick=\"return floatwin('open_extractview',this)\">" . lang('submit_extract') . '</a>]'), '', '', count($u_lists) + 1); $cy_arr = array(); $this->isadmin && ($cy_arr[] = '<input class="checkbox" type="checkbox" name="chkall" onclick="checkall(this.form, \'selectid\', \'chkall\')">'); in_array('mname', $u_lists) && ($cy_arr[] = array($membercname, $css['L'])); in_array('integral', $u_lists) && ($cy_arr[] = lang('extract_count')); in_array('total', $u_lists) && ($cy_arr[] = lang('extract_getcount')); in_array('rate', $u_lists) && ($cy_arr[] = lang('extract_discount')); in_array('checkdate', $u_lists) && ($cy_arr[] = lang('checkdate')); in_array('createdate', $u_lists) && ($cy_arr[] = lang('needtime')); # in_array('delstate',$u_lists) && $cy_arr[] = lang('delstate'); in_array('view', $u_lists) && ($cy_arr[] = $view); trcategory($cy_arr); while ($item = $db->fetch_array($query)) { # $checked = $item['checked'] ? 'Y' : '-'; # $delete = $item['delstate'] ? 'Y' : '-'; $checkdate = $item['checkdate'] ? date('Y-m-d', $item['checkdate']) : '-'; $createdate = date('Y-m-d', $item['createdate']); $itemstr = '<tr class="txt">'; $this->isadmin && ($itemstr .= "<td class=\"{$css['C']} w40\" ><input class=\"checkbox\" type=\"checkbox\" name=\"selectid[{$item['eid']}]\" value=\"{$item['eid']}\"></td>\n"); in_array('mname', $u_lists) && ($itemstr .= "<td class=\"{$css['L']}\">{$item['mname']}</td>\n"); in_array('integral', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$item['integral']}</td>\n"); in_array('total', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$item['total']}</td>\n"); in_array('rate', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$item['rate']}%</td>\n"); in_array('checkdate', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$checkdate}</td>\n"); in_array('createdate', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\">{$createdate}</td>\n"); # in_array('delstate',$u_lists) && $itemstr .= "<td class=\"$css[C]\">$delete</td>\n"; in_array('view', $u_lists) && ($itemstr .= "<td class=\"{$css['C']}\"><a href=\"?{$_SERVER['QUERY_STRING']}&eid={$item['eid']}\" onclick=\"return floatwin('open_extractview',this)\">{$view}</a></td>\n"); $itemstr .= "</tr>\n"; echo $itemstr; } tabfooter(); echo multi($count, $atpp, $page, preg_replace("/[?&]page=\\d+\$|([?&])page=\\d+&/", '$1', "?{$_SERVER['QUERY_STRING']}")); if ($this->isadmin) { tabheader(lang('operate_item')); trbasic(lang('choose_item'), '', '<input class="checkbox" type="checkbox" name="extdeal[delete]" id="extdeal_delete" value="1"><label for="extdeal_delete" >' . lang('delete') . '</label> <input class="checkbox" type="checkbox" name="extdeal[check]" id="extdeal_check" value="1"><label for="extdeal_check" >' . lang('check') . '</label> ', ''); tabfooter('bextedit'); } } elseif ($this->isadmin) { global $selectid, $extdeal, $timestamp; if (function_exists('mcmessage')) { $message = 'mcmessage'; $empty_item = 'selectoperateitem'; } else { $message = 'amessage'; $empty_item = 'selectoperateitem'; } empty($extdeal) && $message($empty_item, axaction(1, M_REFERER)); empty($selectid) && $message('select_extract', axaction(1, M_REFERER)); $wheresql = $this->isadmin ? '' : " AND mid={$curuser->info['mid']}"; $user = new cls_userinfo(); foreach ($selectid as $eid) { if (!empty($extdeal['delete'])) { if ($row = $db->fetch_one("SELECT mid,integral,checkdate FROM {$tblprefix}extracts WHERE eid='{$eid}'{$wheresql} LIMIT 0,1")) { /* if($this->isadmin){ $sql = $row['delstate'] == 2 || !$row['checked'] ? "DELETE FROM {$tblprefix}extracts" :($row['delstate'] == 0 ? "UPDATE {$tblprefix}extracts SET delstate=1" : ''); }else{ $sql = $row['delstate'] == 1 || !$row['checked'] ? "DELETE FROM {$tblprefix}extracts" :($row['delstate'] == 0 ? "UPDATE {$tblprefix}extracts SET delstate=2" : ''); } $sql && $db->query("$sql WHERE eid='$eid'");*/ if ($row['checkdate'] == 0) { $user->activeuser($row['mid']); $user->updatecrids(array('0' => $row['integral']), 1); } $db->query("DELETE FROM {$tblprefix}extracts WHERE eid='{$eid}'"); } continue; } $this->isadmin && $db->query("UPDATE {$tblprefix}extracts SET checkdate={$timestamp} WHERE checkdate=0 AND eid='{$eid}'"); } $this->isadmin && !empty($extdeal['delete']) && adminlog(lang('extract_admin'), lang('extract_operate')); $message('extract_operate_finish', M_REFERER); } }
$itemnew['currency'] = max(0, intval($itemnew['currency'])); if (min($itemnew['currency'], $sparenew) != $items[$cid]['currency']) { $sql_asw .= ($sql_asw ? ',' : '') . "currency=" . min($itemnew['currency'], $sparenew); } $sql_asw && $db->query("UPDATE {$tblprefix}answers SET {$sql_asw} WHERE aid={$aid} AND cid={$cid}"); $sparenew = max(0, $sparenew - $itemnew['currency']); } $sql_arc .= ($sql_arc ? ',' : '') . "adopts={$adoptsnew}"; } if (!empty($archivenew['notaclosed'])) { $auser = new cls_userinfo(); $query = $db->query("SELECT * FROM {$tblprefix}answers WHERE aid={$aid}"); while ($item = $db->fetch_array($query)) { if ($item['currency']) { $auser->activeuser($item['mid']); $auser->updatecrids(array($item['crid'] => $item['currency']), 1, lang('answer_reward')); $auser->init(); } } $auser->activeuser($aedit->archive['mid']); $commu = read_cache('commu', $channels[$aedit->archive['chid']]['cuid']); if ($commu['setting']['credit']) { $auser->sub_data(); $auser->updatefield('credits', $auser->info['credits'] + ($aedit->archive['currency'] - $sparenew) * $commu['setting']['credit'], 'sub'); } $auser->updatecrids(array($aedit->archive['crid'] => $sparenew), 1, lang('answer_reward')); unset($auser); $sql_an .= ($sql_an ? ',' : '') . "end=1"; $sql_arcs .= ($sql_arcs ? ',' : '') . "notaclosed=1"; $sparenew = 0; $db->query("DELETE FROM {$tblprefix}notaanswer WHERE aid={$aid}");
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; }