yzms/show/include/pay_pc.inc.php

817 lines
29 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?
if (is_file("/home/www/ftdcdb.inc.php")) require("/home/www/ftdcdb.inc.php");
elseif (is_file("./ftdcdb.inc.php")) require("./ftdcdb.inc.php");
elseif (is_file("/Users/liuwei/Code/WEB/ftdcdb.inc.php")) require("/Users/liuwei/Code/WEB/ftdcdb.inc.php");
else require("d:/web/ftdcdb.inc.php");
error_reporting(E_ALL & ~E_NOTICE);
if (@$GLOBALS['CI'] && @$GLOBALS['CI']->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) { //<2F><><EFBFBD><EFBFBD>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;