rest && @$GLOBALS['CI']->rest->db) { $GLOBALS['gpay_dbtype'] = 'mysqli'; $GLOBALS['gpay_db'] = $GLOBALS['CI']->rest->db; $GLOBALS['gpay_db']->db_debug = false; } else if (@$this && @$this->db) { $GLOBALS['gpay_dbtype'] = 'mysqli'; $GLOBALS['gpay_db'] = $this->db; $GLOBALS['gpay_db']->db_debug = false; } else { $GLOBALS['gpay_dbtype'] = 'mysql'; $hinfo = @mysql_get_host_info(); if ($hinfo && stristr($hinfo, $ftdcdb_host)) { $GLOBALS['gpay_db'] = ''; } else { $GLOBALS['gpay_db'] = mysql_connect($ftdcdb_host, $ftdcdb_username, $ftdcdb_password); mysql_select_db($ftdcdb_database); mysql_query("set names utf8"); } } if (!function_exists("gpay_query")) { function gpay_query($sql) { global $gpay_dbtype, $gpay_db; if ($gpay_dbtype == 'mysqli') { return $gpay_db->query($sql); } else { if ($gpay_db) return mysql_query($sql, $gpay_db); else return mysql_query($sql); } } } if (!function_exists("gpay_fetchOne")) { function gpay_fetchOne($sql, $result_type = MYSQL_ASSOC) { global $gpay_dbtype, $gpay_db; if ($gpay_dbtype == 'mysqli') { return $gpay_db->query($sql)->row_array(); } else { if ($gpay_db) $result = mysql_query($sql, $gpay_db); else $result = mysql_query($sql); if ($result) { $row = mysql_fetch_array($result, $result_type); return $row; } else { return array(); } } } } if (!function_exists("gpay_fetchAll")) { function gpay_fetchAll($sql, $result_type = MYSQL_ASSOC) { global $gpay_dbtype, $gpay_db; if ($gpay_dbtype == 'mysqli') { return $gpay_db->query($sql)->result_array(); } else { if ($gpay_db) $result = mysql_query($sql, $gpay_db); else $result = mysql_query($sql); $rows = array(); while (@$row = mysql_fetch_array($result, $result_type)) { $rows[] = $row; } return $rows; } } } if (!function_exists("gpay_affected_rows")) { function gpay_affected_rows() { global $gpay_dbtype, $gpay_db; if ($gpay_dbtype == 'mysqli') { return $gpay_db->affected_rows(); } else { if ($gpay_db) return mysql_affected_rows($gpay_db); else return mysql_affected_rows(); } } } if (!function_exists("gpay_insert_id")) { function gpay_insert_id() { global $gpay_dbtype, $gpay_db; if ($gpay_dbtype == 'mysqli') { return $gpay_db->insert_id(); } else { if ($gpay_db) return mysql_insert_id($gpay_db); else return mysql_insert_id(); } } } if (!function_exists("gpay_lock")) { function gpay_lock($type, $key) { $suc = false; $N = 0; while (true) { $t2 = time() - 20; gpay_query("delete from tb_lock where type='{$type}' and `key`='{$key}' and t<" . $t2); gpay_query("insert into tb_lock set type='{$type}', `key`='{$key}', t=" . time()); if (gpay_affected_rows() == 1) { $suc = true; break; } $N++; if ($N >= 100) { break; } usleep(100000); } return $suc; } } function gpay_unlock($type, $key) { gpay_query("delete from tb_lock where type='{$type}' and `key`='{$key}'"); } function gpay_get_user_by_id($uid) { $row = gpay_fetchOne("select a.*,b.name type_name from tb_user a, tb_user_type b where a.type_id = b.id and a.id = {$uid}"); // and a.enabled not in (0, -99) return $row; } function gpay_get_user_account($uid, $type_id) { $row = gpay_fetchOne("select sum(account) as ac from tb_account where user_id={$uid} and type_id={$type_id}"); if ($row) return $row['ac']; return 0; } function gpay_get_user_account_list($uid, $type_id = -1, $supplier_id = -1, $recharge_fund_type = 0, $dy = true) { $sqlext = ''; if ($type_id != -1) { $sqlext .= " and type_id={$type_id} "; } if ($supplier_id != -1) { $sqlext .= " and supplier_id={$supplier_id} "; } if ($recharge_fund_type != 0) { $sqlext .= " and recharge_fund_type={$recharge_fund_type} "; } if ($dy) { //����0 $sqlext .= " and account>0 "; } return gpay_fetchAll("select a.*,b.supplier_name from tb_account a left join tb_supplier b on a.supplier_id=b.id where a.user_id={$uid} {$sqlext} order by a.id"); } /** * 减钱 * @param $uid 用户ID * @param $ac 金额(正数) * @param $ftid 饭堂ID(可为0) * @param $supplier_id 供应商ID(可为0) * @param $rtype tb_recharge_type 操作类型描述 * @param $oid 订单ID * @param $channelid POS机ID * @param string $kkfrom xj或fl或all * @param int $admin_id 管理员ID * @param int $recharge_fund_type 忽略 * @param string $updateInfo 忽略 * @return bool|string suc: 成功 yebz: 余额不足 */ //function gpay_pay_user_account_one($uid, $ac, $ftid, $supplier_id, $rtype, $oid, $channelid, $kkfrom = 'all', $admin_id = 0, $recharge_fund_type = 0, &$updateInfo = '') function gpay_pay_user_account_one($uid, $ac, $info, &$updateInfo = '') { if ($ac == 0 && !isset($info['extra_fee'])) return true; if($ac == 0){ if(!gpay_lock("account", $uid)) return "lockfail"; // 获取当前用户的所有账户列表 $accountList = gpay_get_user_account_list($uid, -1, -1, 0, false); if(!empty($accountList)){ // 获取所有账户的金额 $account = 0; foreach ($accountList as $k => $v){ $account += $v['account']; } if($account == 0 && $info['extra_fee'] == 0){ // 录入tb_recharge 金额0的记录 $oid = intval($info['oid']); $rtype = intval($info['rtype']); $ftid = intval($info['ftid']); $channelid = intval($info['channelid']); $admin_id = intval($info['admin_id']); $recharge_fund_type = intval($info['recharge_fund_type']); $extra_fee = floatval($info['extra_fee']); if(isset($info['result'])) $result_v = intval($info['result']); else $result_v = 1; $to_account_id = intval($info['to_account_id']); $from_account_id = intval($info['from_account_id']); $recInfo = array( 'account_id' => $accountList[0]['id'], 'recharge_amount' => $account, 'new_amount' => $accountList[0]['account'], 'old_amount' => $accountList[0]['account'], 'order_id' => $oid, 'type' => $rtype, 'ftid' => $ftid, 'channel_id' => $channelid, 'admin_id' => $admin_id, 'recharge_fund_type' => $recharge_fund_type, 'extra_fee' => $extra_fee, 'result' => $result_v, 'to_account_id' => $to_account_id, 'from_account_id' => $from_account_id, ); if(isset($info['ori_amount'])) $recInfo['ori_amount'] = floatval($info['ori_amount']); //原价 $rechargeList[] = $recInfo; $updateInfo = $rechargeList; foreach($rechargeList as $key => $jinfo) { $jinfo['user_id'] = $uid; $jinfo['record_datetime'] = date("Y-m-d H:i:s"); $jinfo['result'] = '1'; $isql = ''; foreach($jinfo as $key2 => $value) { if($isql != '') $isql .= ", "; $isql .= " `{$key2}`='".addslashes($value)."' "; } gpay_query("insert into tb_recharge set ".$isql); $rid = gpay_insert_id(); $rechargeList[$key]['id'] = $rid; gpay_query("update tb_account set account='".$jinfo['new_amount']."' where id=".$jinfo['account_id']); } $updateInfo = $rechargeList; gpay_unlock("account", $uid); return "suc"; } gpay_unlock("account", $uid); }else{ gpay_unlock("account", $uid); return "yebz"; } } $info['ac'] = $ac; return gpay_pay_user_account($uid, array($info), $updateInfo); } function gpay_get_account_by_id($account_id) { return gpay_fetchOne("select * from tb_account where id={$account_id}"); } function gpay_pay_user_account($uid, $rList, &$updateInfo = '') { $row = gpay_get_user_by_id($uid); if (!$row) { return "nouser"; } $company_id = intval($row['company_id']); $companyInfo = gpay_fetchOne("select * from tb_company where id = '{$company_id}'"); foreach ($rList as $item) { $ac = $item['ac']; if ($ac < 0) return 'err'; } if (!gpay_lock("account", $uid)) return "lockfail"; $xjList = gpay_get_user_account_list($uid, 2); if($company_id == 54) $jlList = gpay_get_user_account_list($uid, 3); //交通局激励账户 if($company_id == 30) $pcList = gpay_get_user_account_list($uid, 4); //汕头电信配餐账户 $spList = array(); foreach ($rList as $key => $item) { $supplier_id = $item['supplier_id']; $ftid = $item['ftid']; if ($supplier_id == -1 || !isset($item['supplier_id'])) { //根据饭堂ID自动获取 $ftrow = gpay_fetchOne("select * from tb_dining_hall where id = " . intval($ftid)); if ($ftrow) $supplier_id = $ftrow['supplier_id']; else $supplier_id = 0; $rList[$key]['supplier_id'] = $supplier_id; } if ($supplier_id > 0) { $spList[$supplier_id] = gpay_get_user_account_list($uid, 1, $supplier_id); } } $rechargeList = array(); foreach ($rList as $item) { $ac = $item['ac']; $ac_r = $item['ac']; $rtype = intval($item['rtype']); $ftid = intval($item['ftid']); $supplier_id = intval($item['supplier_id']); $oid = intval($item['oid']); $channelid = intval($item['channelid']); $kkfrom = $item['kkfrom']; $admin_id = intval($item['admin_id']); $recharge_fund_type = intval($item['recharge_fund_type']); $extra_fee = floatval($item['extra_fee']); $consume_source = $item['consume_source']; if(empty($consume_source)){ $consume_source = "ft"; } if (isset($item['result'])) $result_v = intval($item['result']); else $result_v = 1; $to_account_id = intval($item['to_account_id']); $from_account_id = intval($item['from_account_id']); if (!$spList[$supplier_id]) $spList[$supplier_id] = array(); if ($kkfrom == 'xj') { if ($supplier_id == 0 || $supplier_id == 97) { //97 韶关小岛生日账户特殊处理 $yeList = $xjList; } else { $yeList = array(); foreach ($xjList as $item2) { if ($item2['supplier_id'] == 0 || $item2['supplier_id'] == $supplier_id) $yeList[] = $item2; } } } else if ($kkfrom == 'fl') { $yeList = $spList[$supplier_id]; } else if ($kkfrom == 'pc') { $yeList = $pcList; } else if ($kkfrom == 'jl') { //交通局激励账户 $yeList = $jlList; } else { $flAccount = $spList[$supplier_id]; $xjAccount = array(); if ($supplier_id == 0 || $supplier_id == 97) { //97 韶关小岛生日账户特殊处理 foreach ($xjList as $item2) { $xjAccount[] = $item2; } } else { foreach ($xjList as $item2) { if ($item2['supplier_id'] == 0 || $item2['supplier_id'] == $supplier_id) $xjAccount[] = $item2; } } if ($companyInfo['kk_first'] == 'xj') { $yeList = array_merge($xjAccount, $flAccount); } else { if($company_id == 30){ // 汕头电信 // 食堂消费顺序 福利 -> 现金 -> 配餐 // 商城消费顺序 配餐 -> 福利 -> 现金 if($consume_source == 'ft'){ $yeList = array_merge($flAccount, $xjAccount); $yeList = array_merge($yeList, $pcList); }else{ $yeList = array_merge($pcList, $flAccount); $yeList = array_merge($yeList, $xjAccount); } }else{ $yeList = array_merge($flAccount, $xjAccount); } } } /*if($recharge_fund_type != 0) { $yeList2 = array(); foreach($yeList as $key => $item) { if($item['recharge_fund_type'] == $recharge_fund_type) $yeList2[] = $item; } $yeList = $yeList2; }*/ $rechargeList_t = array(); foreach ($yeList as $key => $item2) { if (round($item2['account'] * 100) <= 0) continue; if (round($item2['account'] * 100) >= round($ac * 100)) { $old_amount = $item2['account']; $recharge_amount = $ac; $yeList[$key]['account'] -= $ac; $ac = 0; $recInfo = array( 'account_id' => $item2['id'], 'recharge_amount' => "-" . $recharge_amount, 'new_amount' => $yeList[$key]['account'], 'old_amount' => $old_amount, 'order_id' => intval($oid), 'type' => intval($rtype), 'ftid' => intval($ftid), 'channel_id' => intval($channelid), 'admin_id' => intval($admin_id), 'recharge_fund_type' => intval($recharge_fund_type), 'extra_fee' => $extra_fee, 'result' => $result_v, 'to_account_id' => $to_account_id, 'from_account_id' => $from_account_id, ); if(isset($item['ori_amount'])) $recInfo['ori_amount'] = floatval($item['ori_amount']); //原价 $rechargeList_t[] = $recInfo; break; } else { $old_amount = $item2['account']; $ac -= $item2['account']; $yeList[$key]['account'] = 0; $recInfo = array( 'account_id' => $item2['id'], 'recharge_amount' => "-" . $old_amount, 'new_amount' => 0, 'old_amount' => $old_amount, 'order_id' => intval($oid), 'type' => intval($rtype), 'ftid' => intval($ftid), 'channel_id' => intval($channelid), 'admin_id' => intval($admin_id), 'recharge_fund_type' => intval($recharge_fund_type), 'extra_fee' => $extra_fee, 'result' => $result_v, 'to_account_id' => $to_account_id, 'from_account_id' => $from_account_id, ); if(isset($item['ori_amount'])) $recInfo['ori_amount'] = floatval($item['ori_amount']); //原价 $rechargeList_t[] = $recInfo; } } if (round($ac * 100) > 0) { //余额不足 gpay_unlock("account", $uid); return "yebz"; } if(isset($item['ori_amount']) && count($rechargeList_t) > 1) { //按比例分配ori_amount $ori_amount = floatval($item['ori_amount']); $ac_r_b = round($ac_r*100); $ori_amount_b = $ori_amount_b2 = round($ori_amount*100); foreach ($rechargeList_t as $key2 => $item2) { if($key2 == count($rechargeList_t) - 1) { $rechargeList_t[$key2]['ori_amount'] = $ori_amount_b2 / 100; } else { $recharge_amount_b = round(abs($item2['recharge_amount'])*100); $ori_amount_b3 = round($recharge_amount_b / $ac_r_b * $ori_amount_b); $ori_amount_b2 -= $ori_amount_b3; $rechargeList_t[$key2]['ori_amount'] = $ori_amount_b3 / 100; } } } foreach ($rechargeList_t as $item2) { $rechargeList[] = $item2; } $xjList = array(); if ($supplier_id != 0) $spList[$supplier_id] = array(); foreach ($yeList as $item2) { if ($item2['type_id'] == 2) $xjList[] = $item2; else if ($supplier_id != 0) $spList[$supplier_id][] = $item2; } } foreach ($rechargeList as $key => $jinfo) { $jinfo['user_id'] = $uid; $jinfo['record_datetime'] = date("Y-m-d H:i:s"); $jinfo['result'] = '1'; $isql = ''; foreach ($jinfo as $key2 => $value) { if ($isql != '') $isql .= ", "; $isql .= " `{$key2}`='" . addslashes($value) . "' "; } gpay_query("insert into tb_recharge set " . $isql); $rid = gpay_insert_id(); $rechargeList[$key]['id'] = $rid; gpay_query("update tb_account set account='" . $jinfo['new_amount'] . "' where id=" . $jinfo['account_id']); } $updateInfo = $rechargeList; gpay_unlock("account", $uid); return "suc"; } function gpay_get_or_add_user_account($uid, $type_id, $supplier_id, $recharge_fund_type = 0) { $data = gpay_get_user_account_list($uid, $type_id, $supplier_id, $recharge_fund_type, false); if ($data) return $data; $jinfo = array( 'user_id' => $uid, 'supplier_id' => $supplier_id, 'account' => 0, 'type_id' => $type_id, 'recharge_fund_type' => $recharge_fund_type, 'addtime' => date("Y-m-d H:i:s"), ); $isql = ''; foreach ($jinfo as $key => $value) { if ($isql != '') $isql .= ", "; $isql .= " `{$key}`='" . addslashes($value) . "' "; } gpay_query("insert into tb_account set " . $isql); return gpay_get_user_account_list($uid, $type_id, $supplier_id, $recharge_fund_type, false); } /** * 加钱操作 * @param $userid * @param $ac * @param int $admin_id * @param int $oid * @param int $recharge_fund_type 资金来源(描述) * @param int $rtype 操作类型(tb_recharge_type 描述) * @param int $ac_type 1: 福利 2: 现金 * @param int $supplier_id * @return string */ //gpay_add_user_account_uid($userid, $ac, $admin_id = 1, $oid = 0, $recharge_fund_type = 2, $rtype = 1, $ac_type = 2, $supplier_id = 0) { function gpay_add_user_account_uid($userid, $ac, $info, &$updateInfo = '') { $supplier_id = intval($info['supplier_id']); $recharge_fund_type = intval($info['recharge_fund_type']); $ac_type = intval($info['ac_type']); if ($ac < 0) return 'err'; $user = gpay_get_user_by_id($userid); if (!$user) { return "nouser"; } $aList = gpay_get_or_add_user_account($userid, $ac_type, $supplier_id, $recharge_fund_type); if (!$aList) { return "syserr"; } return gpay_add_user_account($aList[0]['id'], $ac, $info, $updateInfo); } //function gpay_add_user_account($account_id, $ac, $ftid, $rtype, $oid, $admin_id = 0, $recharge_fund_type = 0, $extra_fee = 0) { function gpay_add_user_account($account_id, $ac, $info, &$updateInfo = '') { $ftid = intval($info['ftid']); $rtype = intval($info['rtype']); $oid = intval($info['oid']); $admin_id = intval($info['admin_id']); $recharge_fund_type = intval($info['recharge_fund_type']); $extra_fee = intval($info['extra_fee']); $to_account_id = intval($info['to_account_id']); $from_account_id = intval($info['from_account_id']); if ($ac < 0) return 'err'; $aInfo = gpay_get_account_by_id($account_id); if (!$aInfo) { return "noaccount"; } $uid = $aInfo['user_id']; if (!gpay_lock("account", $uid)) return "lockfail"; $aInfo = gpay_get_account_by_id($account_id); $old_amount = $aInfo['account']; $new_amount = $aInfo['account'] + $ac; gpay_query("update tb_account set account='" . $new_amount . "' where id=" . $account_id); $jinfo = array( 'account_id' => $account_id, 'recharge_amount' => $ac, 'new_amount' => $new_amount, 'old_amount' => $old_amount, 'order_id' => intval($oid), 'type' => intval($rtype), 'ftid' => intval($ftid), 'user_id' => $uid, 'record_datetime' => date("Y-m-d H:i:s"), 'result' => 1, 'admin_id' => $admin_id, 'recharge_fund_type' => $recharge_fund_type, 'extra_fee' => $extra_fee, 'to_account_id' => $to_account_id, 'from_account_id' => $from_account_id, ); $isql = ''; foreach ($jinfo as $key => $value) { if ($isql != '') $isql .= ", "; $isql .= " `{$key}`='" . addslashes($value) . "' "; } gpay_query("insert into tb_recharge set " . $isql); $rid = gpay_insert_id(); $jinfo['id'] = $rid; $updateInfo = $jinfo; gpay_unlock("account", $uid); return "suc"; } function gpay_refund_user_account($type, $oid, $rtype, $admin_id = 0) { //退款 $getsql = "select * from tb_recharge where order_id={$oid} and type={$type} order by id"; if ($type == -1) $getsql = "select * from tb_recharge where id=" . $oid; $rList = gpay_fetchAll($getsql); if (!$rList) { return "norecord"; } foreach ($rList as $item) { $ac = $item['recharge_amount']; if ($ac > 0) { return "err"; } } $uid = $rList[0]['user_id']; if (!gpay_lock("account", $uid) || !gpay_lock("refund", $type . "_" . $oid)) { gpay_unlock("account", $uid); gpay_unlock("refund", $type . "_" . $oid); return "lockfail"; } $rfList = gpay_fetchAll("select * from tb_recharge where order_id={$oid} and type={$rtype} order by id"); if ($rfList) { gpay_unlock("account", $uid); gpay_unlock("refund", $type . "_" . $oid); return "hasrefund"; } foreach ($rList as $item) { $account_id = $item['account_id']; $ac = abs($item['recharge_amount']); $ftid = $item['ftid']; $aInfo = gpay_get_account_by_id($account_id); $old_amount = $aInfo['account']; $new_amount = $aInfo['account'] + $ac; gpay_query("update tb_account set account='" . $new_amount . "' where id=" . $account_id); $jinfo = array( 'account_id' => $account_id, 'recharge_amount' => $ac, 'new_amount' => $new_amount, 'old_amount' => $old_amount, 'order_id' => intval($oid), 'type' => intval($rtype), 'ftid' => intval($ftid), 'user_id' => $uid, 'record_datetime' => date("Y-m-d H:i:s"), 'result' => 1, 'admin_id' => $admin_id, ); $isql = ''; foreach ($jinfo as $key => $value) { if ($isql != '') $isql .= ", "; $isql .= " `{$key}`='" . addslashes($value) . "' "; } gpay_query("insert into tb_recharge set " . $isql); } gpay_unlock("account", $uid); gpay_unlock("refund", $type . "_" . $oid); return "suc"; } function gpay_cancel_dc($order_id, $admin_id, $rtype = 3) { $row = gpay_fetchOne("select * from tb_order where id='{$order_id}' or code='{$order_id}'"); if (!$row) return 'no order'; if ($row['state_id'] != 6 && $row['state_id'] != 3) { return 'state error'; } $oid = $row['id']; $r = gpay_refund_user_account(2, $oid, $rtype, $admin_id); if ($r != 'suc') return $r; gpay_query("update tb_order set state_id=4,cancel_time=now() where id=" . $oid); return 'suc'; } function gpay_cancel_pay_account($type, $oid, $reason = '', $cancel_admin_id = 0) { //取消支付 $getsql = "select * from tb_recharge where order_id={$oid} and type={$type} order by record_datetime"; if ($type == -1) $getsql = "select * from tb_recharge where id=" . $oid; $rList = gpay_fetchAll($getsql); if (!$rList) { return "norecord"; } $uid = $rList[0]['user_id']; if (!gpay_lock("account", $uid)) { gpay_unlock("account", $uid); return "lockfail"; } $rList = gpay_fetchAll($getsql); if (!$rList) { gpay_unlock("account", $uid); return "syserr"; } //记录 $tdata = array(); $trow = gpay_fetchOne("show tables like 'tb_recharge_cancel_log'"); if ($trow) { $tdata = gpay_fetchAll("desc tb_recharge_cancel_log"); } foreach ($rList as $item) { $account_id = $item['account_id']; $ac = $item['recharge_amount']; $time = $item['record_datetime']; $rid = $item['id']; $aInfo = gpay_get_account_by_id($account_id); $old_amount = $aInfo['account']; $new_amount = $aInfo['account'] - $ac; gpay_query("update tb_account set account='" . $new_amount . "' where id=" . $account_id); gpay_query("delete from tb_recharge where id=" . $rid); $row = gpay_fetchOne("select * from tb_recharge where account_id=" . $account_id . " and id<{$rid} order by id desc limit 1"); if ($row) { $old_amount = $row['new_amount']; } else { $old_amount = 0; } $data = gpay_fetchAll("select * from tb_recharge where account_id=" . $account_id . " and id>{$rid} order by id"); foreach ($data as $item2) { $new_amount = $old_amount + $item2['recharge_amount']; //echo $old_amount."\t".$item2->recharge_amount."\t".$new_amount."\n"; gpay_query("update tb_recharge set old_amount={$old_amount},new_amount={$new_amount} where id=" . $item2['id']); $old_amount = $new_amount; } //记录 if ($tdata) { $sql = ''; foreach ($tdata as $titem) { $Field = $titem['Field']; if ($Field == 'id' || $Field == 'addtime' || $Field == 'rid' || $Field == 'reason' || $Field == 'cancel_admin_id') continue; $v = $item[$Field]; if ($v === null) $sql .= " `{$Field}`=null, "; else $sql .= " `{$Field}`='" . addslashes($v) . "',"; } $sql = "insert into tb_recharge_cancel_log set {$sql} rid=" . $item['id'] . ",reason='" . addslashes($reason) . "',cancel_admin_id=" . intval($cancel_admin_id) . ",addtime=now()"; gpay_query($sql); } } gpay_unlock("account", $uid); return "suc"; } function gpay_modify_pay_account($recharge_id, $new_recharge_amount, $reason = '', $modify_admin_id = 0) { //修改支付金额 if($new_recharge_amount == 0) { return gpay_cancel_pay_account(-1, $recharge_id, $reason, $modify_admin_id); } if($new_recharge_amount > 0) { return 'new_recharge_amount_err'; } $getsql = "select * from tb_recharge where id=".$recharge_id; $item = gpay_fetchOne($getsql); if(!$item) { return "norecord"; } if($item['recharge_amount'] >= 0) { return 'notpay'; } $modify_value = $new_recharge_amount - $item['recharge_amount']; //退款金额 if($modify_value <= 0) { return 'new_recharge_amount_err'; } $uid = $rInfo['user_id']; if(!gpay_lock("account", $uid)) { gpay_unlock("account", $uid); return "lockfail"; } $item = gpay_fetchOne($getsql); if(!$item) { gpay_unlock("account", $uid); return "syserr"; } $old_recharge_amount = $item['recharge_amount']; $old_amount_1 = $item['old_amount']; $new_amount_1 = $old_amount_1 + $new_recharge_amount; //记录 $trow = gpay_fetchOne("show tables like 'tb_recharge_modify_log'"); $account_id = $item['account_id']; $ac = $item['recharge_amount']; $time = $item['record_datetime']; $rid = $item['id']; $aInfo = gpay_get_account_by_id($account_id); $old_amount = $aInfo['account']; $new_amount = $aInfo['account'] + $modify_value; $update_ori_amount = ""; if(isset($item['ori_amount']) && !empty($item['ori_amount'] )){ $ori_amount = $item['ori_amount'] - abs($modify_value); // 原价 $update_ori_amount = ", ori_amount={$ori_amount}"; } gpay_query("update tb_account set account='".$new_amount."' where id=".$account_id); gpay_query("update tb_recharge set recharge_amount = {$new_recharge_amount}, new_amount={$new_amount_1} {$update_ori_amount} where id=".$rid); $old_amount = $new_amount_1; $data = gpay_fetchAll("select * from tb_recharge where account_id=".$account_id." and id>{$rid} order by id"); foreach($data as $item2) { $new_amount = $old_amount + $item2['recharge_amount']; //echo $old_amount."\t".$item2->recharge_amount."\t".$new_amount."\n"; gpay_query("update tb_recharge set old_amount={$old_amount},new_amount={$new_amount} where id=".$item2['id']); $old_amount = $new_amount; } //记录 if($trow) { gpay_query("insert into tb_recharge_modify_log set rid = {$recharge_id}, old_recharge_amount = {$old_recharge_amount}, new_recharge_amount = {$new_recharge_amount},reason='".addslashes($reason)."',modify_admin_id=".intval($modify_admin_id).", `addtime` = now()"); } gpay_unlock("account", $uid); return "suc"; } //$d = gpay_fetchAll("select * from tb_user limit 2"); //print_r($d); //$r = gpay_refund_user_account(3, 123, 9); //$r = add_user_account_uid(3, 4.56, 1, 0, 2, 7, 1, 9) ; //var_dump($r); //exit;