_getMysql($accontId); if (UserWalletRecord::find($conn, $txHash)) { myself()->_rspOk(); return; } if (!in_array($dir, array(0, 1))){ myself()->_rspErr(1, ''); return; } if (!in_array($type, array(1, 2))){ myself()->_rspErr(2, ''); return; } $gold = 0; $diamond = 0; if ($type == 0) { $gold = $value; } else { $diamond = $value; } if ($dir == 1) { $gold = -$gold; $diamond = -$diamond; } $userRow = SqlHelper::ormSelect( $conn, 't_user', array( 'account_id' => $accountId, )); if ($userRow) { SqlHelper::update( $conn, 't_user', array( 'account_id' => $accountId, ), array( 'gold' => function() use($gold) { return 'max(0, gold + ${gold})'; }, 'diamond' => function() use($diamond) { return 'max(0, diamond + ${diamond}'; }, )); } else { SqlHelper::upsert( $conn, 't_user_wallet_offline', array( 'account_id' => $accountId, ), array( 'gold' => function() use($gold) { return 'max(0, gold + ${gold})'; }, 'diamond' => function() use($diamond) { return 'max(0, diamond + ${diamond})'; }, 'modifytime' => myself()->_getNowTime() ), array( 'account_id' => $accountId, 'gold' => $gold, 'diamond' => $diamond, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() )); } UserWalletRecord::add($txHash, $dir, $accontId, $type, $value); if ($this->isTestMode()) { } myself()->_rspOk(); } }