def get_depth(pair_name): DEPTH_EXPIRE_DATA_TIME = 5 * 60 result = sql_module.query_data( 'SELECT timetick,bid,ask FROM history_depth WHERE pair = "%s" ORDER BY timetick LIMIT 30' % pair_name) if result: timetick = result[0][0] exec('bid_list = ' + result[0][1]) exec('ask_list = ' + result[0][2]) if base_library.get_time_tick() < timetick + DEPTH_EXPIRE_DATA_TIME: return server_data.server_api_result(True, data={ 'timetick': timetick, 'bid': bid_list, 'ask': ask_list, }) depth_result = exchange_api.exchange.update_depth(pair_name) if not depth_result: return server_data.server_api_result(False, 'No Data') return server_data.server_api_result(True, data=depth_result)
def get_k_line(pair_name, time_interval='1min'): if '1min' == time_interval: result = sql_module.query_data( 'SELECT * FROM history_market WHERE pair = "%s" ORDER BY timetick LIMIT 1440' % pair_name) #elif '3min' == time_interval : #elif '5min' == time_interval : #elif '15min' == time_interval : #elif '1h' == time_interval : #elif '4h' == time_interval : #elif '12h' == time_interval : #elif '1d' == time_interval : #elif '1w' == time_interval : # result = sql_module.query_data('SELECT * FROM history_market WHERE pair = "%s" ORDER BY timetick LIMIT 1440' % pair_name) output_result = [] for index in result: output_result.append({ 'open': str(index[1]), 'close': str(index[2]), 'max': str(index[3]), 'min': str(index[4]), 'timetick': str(index[5]), 'amount': str(index[6]), }) if not result: return server_data.server_api_result(False, 'No Data') return server_data.server_api_result(True, data=output_result)
def login(tornado_object): user_name = tornado_object.get_argument('user') password = tornado_object.get_argument('pass') tick_id = tornado_object.get_argument('tick') valid_result = captcha.check_tick(tick_id) if not tick_id.get_status(): return valid_result if not user_name or not password: return server_data.server_api_result(False, 'Lost Argument') status = user_manager.login(user_name, password) if status.get_status(): if session.SESSION_NAME in tornado_object.request.arguments.keys(): old_session_id = tornado_object.get_argument( session.SESSION_NAME) #old_session_id = tornado_object.get_cookie(session.SESSION_NAME) if old_session_id: global_session.delete_session(old_session_id) new_session_id = global_session.make_new_session() uid = user_manager.get_uid_by_user_name(user_name).get_data() global_session.set_session_data(new_session_id, 'uid', uid) #tornado_object.set_cookie(session.SESSION_NAME,new_session_id) return server_data.server_api_result(True, data=new_session_id) return status
def get_simple_k_line(pair_name): SIMPLE_K_LINE_TIME_INTERVAL = 30 result = sql_module.query_data( 'SELECT close FROM history_market WHERE pair = "%s" AND timeinterval = "1m" ORDER BY timetick LIMIT 1440' % pair_name) if not result: return server_data.server_api_result(False, 'No Data') output_result = [] for index in range(0, len(result), SIMPLE_K_LINE_TIME_INTERVAL): end_search_limit = 0 if index + SIMPLE_K_LINE_TIME_INTERVAL > len(result): end_search_limit = len(result) else: end_search_limit = index + SIMPLE_K_LINE_TIME_INTERVAL max_close = 0 for search_max_index in range(index, end_search_limit): if max_close < result[search_max_index]: max_close = str(result[search_max_index][0]) output_result.append(max_close) return server_data.server_api_result(True, data=output_result)
def withdraw(uid, coin_name, amount): #if not exchange_api.base_api.is_support_exchange_coin(coin_name) : # return server_data.server_api_result(False,'Not Found Coin') coin_name = coin_name.lower() if not len(result): return server_data.server_api_result(False, 'User not Bind Withdraw Address') address = user_manager.get_user_withdraw_address(uid, coin_name) if not address.get_status(): return address address = address.get_data() coin_amount = exchange_api.base_api.get_coin_amount(coin_name) if amount > coin_amount: return server_data.server_api_result(False, 'User Coin Amount Less') withdraw_id = exchange_api.exchange.withdraw(coin_name, amount, address) if not withdraw_id: return server_data.server_api_result(False, 'Withdraw Except')
def order_sell(uid, pair_name, amount, price): symbols_list = exchange_api.exchange.get_all_coin() if not pair_name in symbols_list: return server_data.server_api_result(False, 'Not Found Symbols') base_coin = pair_name.split('/')[0] if not exchange_api.base_api.is_support_exchange_coin( base_coin) or not exchange_api.base_api.is_exist_coin_pair( pair_name): return server_data.server_api_result(False, 'Internal Exchange UnSupport') coin_amount = exchange_api.base_api.get_coin_amount(base_coin) if amount > coin_amount: return server_data.server_api_result(False, 'User Coin Amount Less') order_id = exchange_api.exchange.order_sell(pair_name, amount, price) if not order_id: return server_data.server_api_result(False, 'Make Order Except') poundage = amount * price * BUY_SELL_POUNDAGE_RATE sql_module.insert_data( 'INSERT INTO history_exchange(uid,pair,amount,price,poundage,timetick) VALUES (%s,"%s","","%s",%s,%s)' % (uid, pair_name, amount, price, poundage, base_library.get_time_tick())) return server_data.server_api_result(True)
def is_exist_user(user_name): result = sql_module.query_data('SELECT * FROM user_info WHERE name="%s"' % user_name) if result: return server_data.server_api_result(True) return server_data.server_api_result(False, 'Not Found User')
def get_uid_by_user_name(user_name): result = sql_module.query_data( 'SELECT uid FROM user_info WHERE name="%s"' % user_name) if result: return server_data.server_api_result(True, data=result[0][0]) return server_data.server_api_result(False, 'Not Found')
def is_active_user(user_name): result = sql_module.query_data( 'SELECT active FROM user_info WHERE name="%s"' % user_name) if result: if result[0][0] == 1: return server_data.server_api_result(True) return server_data.server_api_result(False, 'This User was not Active')
def check_tick(tick_id): valid_state = captcha.check_tick(tick_id) if captcha.tick_result.tick_state_success == valid_state: return server_data.server_api_result(True) elif captcha.tick_result.tick_state_expire == valid_state: return server_data.server_api_result(False, 'Captcha Expire') return server_data.server_api_result(False, 'Captcha Error')
def get_user_coin(uid): result = sql_module.query_data( 'SELECT * FROM user_address WHERE uid = %s' % uid) if result: result = [] return server_data.server_api_result(True, data=result) return server_data.server_api_result(False, 'Not Found')
def logout(tornado_object): session_id = tornado_object.get_argument(session.SESSION_NAME) #session_id = tornado_object.get_cookie(session.SESSION_NAME) if not session_id: return server_data.server_api_result(False) global_session.delete_session(session_id) #tornado_object.set_cookie(session.SESSION_NAME,'') return server_data.server_api_result(True)
def make_valid_code(tornado_object): user_name = tornado_object.get_argument('user') if not user_name: return server_data.server_api_result(False, 'Not Found User') valid_code = user_manager.make_new_user(user_name) # valid_code will send to browser for debug , remember delete it .. return server_data.server_api_result(True, data=valid_code)
def is_not_expier_valid_code_time(user_name): result = sql_module.query_data( 'SELECT valid_code_make_time FROM user_info WHERE name="%s"' % user_name) if result: if base_library.get_time_tick( ) <= result[0][0] + VALID_CODE_EXPIER_TIME: return server_data.server_api_result(True) return server_data.server_api_result(False, 'Valid Code Expire')
def get_user_balance(uid, coin_name): coin_name = coin_name.lower() result = sql_module.query_data( 'SELECT %s FROM user_coin WHERE uid = "%s"' % (coin_name, uid)) if not len(result): return server_data.server_api_result(False, 'No Data') if len(result): return server_data.server_api_result(True, data=float(result[0][0])) return server_data.server_api_result(False, 'Not Found')
def set_user_balance(uid, coin_name, new_balance): new_balance = float(new_balance) if new_balance < 0: return server_data.server_api_result(False, 'New Balance less than 0') coin_name = coin_name.lower() sql_module.insert('UPDATE user_coin SET %s = %f WHERE uid = "%s"' % (coin_name, new_balance, uid)) return server_data.server_api_result(True)
def get_real_time_deal_record(pair_name): result = sql_module.query_data( 'SELECT price,amount,timetick FROM history_exchange WHERE pair = "%s" ORDER BY timetick LIMIT 60' % pair_name) if not result: return server_data.server_api_result(False, 'No Data') format_result = [] for index in result: format_result.append((float(index[0]), float(index[1]), int(index[2]))) return server_data.server_api_result(True, data=format_result)
def regedit_new_user(user_name, user_password, valid_code): if not is_legal_user_name(user_name): return server_data.server_api_result(False, 'Is illegal User Name') if is_active_user(user_name).get_status(): return server_data.server_api_result(False, 'User has Regedit') valid_code_status = check_valid_code(user_name, valid_code) if not valid_code_status.get_status(): return server_data.server_api_result( False, valid_code_status.get_description()) return init_user(user_name, user_password)
def check_valid_code(user_name, valid_code): if not is_legal_user_name(user_name): return server_data.server_api_result(False, 'Is illegal User Name') if not is_not_expier_valid_code_time(user_name).get_status(): return server_data.server_api_result(False, 'Valid Code Expire') result = sql_module.query_data( 'SELECT valid_code FROM user_info WHERE name="%s"' % user_name) if result: if result[0][0] == valid_code: return server_data.server_api_result(True) return server_data.server_api_result(False, 'Valid Code Error')
def login(user_name, user_password): if not is_legal_user_name(user_name): return server_data.server_api_result(False, 'Is illegal User Name') if not is_active_user(user_name).get_status(): return server_data.server_api_result(False, 'User has not Regedit') result = sql_module.query_data( 'SELECT password FROM user_info WHERE name = "%s"' % user_name) if result: if result[0][0] == user_password: return server_data.server_api_result(True) return server_data.server_api_result(False, 'User or Password incorrect')
def get_coin_info(pair_name): result = sql_module.query_data('SELECT * FROM market WHERE pair = "%s"' % pair_name) if not result: return server_data.server_api_result(False, 'No Data') result = { 'pair': result[0][0], 'price': str(result[0][1]), 'amount': str(result[0][2]), 'increase': str(result[0][3]), 'open': str(result[0][4]), } return server_data.server_api_result(True, data=result)
def check_exist_name(tornado_object): user_name = tornado_object.get_argument('user') if not user_name: return server_data.server_api_result(False, 'Not Found User') return user_manager.is_active_user(user_name)
def get_depth(tornado_object): pair_name = tornado_object.get_argument('pair') if not pair_name: return server_data.server_api_result(False, 'Lost Argument') return market_manager.get_depth(pair_name)
def init_user(user_name, user_password): uid_data = get_uid_by_user_name(user_name) if not uid_data.get_status(): return server_data.server_api_result(False, uid_data.get_description()) sql_module.insert_data('UPDATE user_info SET password = "******" , active = 1 WHERE name = "%s"' % \ (user_password,user_name)) uid = uid_data.get_data() sql_module.insert_data( 'INSERT INTO user_address(uid,bind_btc_address,bind_eth_address,bind_usdt_address) VALUES (%s)' % (uid)) sql_module.insert_data('INSERT INTO user_coin(uid) VALUES (%s)' % (uid)) return server_data.server_api_result(True)
def regeist_user(tornado_object): user_name = tornado_object.get_argument('user') password = tornado_object.get_argument('pass') valid_code = tornado_object.get_argument('valid_code') if not user_name or not password or not valid_code: return server_data.server_api_result(False, 'Lost Argument') return user_manager.regedit_new_user(user_name, password, valid_code)
def get_withdraw_address(tornado_object): session_id = tornado_object.get_argument(session.SESSION_NAME) #session_id = tornado_object.get_cookie(session.SESSION_NAME) if not session_id: return server_data.server_api_result(False, 'Plaese Login') uid = global_session.get_session_data(session_id, 'uid') if not uid: return server_data.server_api_result(False, 'Invalid uid') try: coin = tornado_object.get_argument('coin') except: return server_data.server_api_result(False, 'Invalid Argument') return user_manager.get_user_withdraw_address(uid, coin)
def get_user_coin(tornado_object): session_id = tornado_object.get_argument(session.SESSION_NAME) #session_id = tornado_object.get_cookie(session.SESSION_NAME) if not session_id: return server_data.server_api_result(False, 'Plaese Login') uid = global_session.get_session_data(session_id, 'uid') if not uid: return server_data.server_api_result(False, 'Invalid uid') status = user_manager.get_user_coin(uid) if status.get_status(): return server_data.server_api_result(True, data=status.get_description()) return server_data.server_api_result(False, status.get_description())
def withdraw(tornado_object): session_id = tornado_object.get_argument(session.SESSION_NAME) #session_id = tornado_object.get_cookie(session.SESSION_NAME) if not session_id: return server_data.server_api_result(False, 'Plaese Login') uid = global_session.get_session_data(session_id, 'uid') if not uid: return server_data.server_api_result(False, 'Invalid uid') try: coin = tornado_object.get_argument('coin') amount = float(tornado_object.get_argument('amount')) except: return server_data.server_api_result(False, 'Invalid Argument') return market_manager.withdraw(uid, coin, amount)
def set_user_withdraw_address(uid, coin_name, address): coin_name = coin_name.lower() if 'btc' == coin_name: sql_module.insert_data( 'UPDATE user_address SET bind_btc_address = "%s" WHERE uid = "%s"' % (address, uid)) elif 'eth' == coin_name: sql_module.insert_data( 'UPDATE user_address SET bind_eth_address = "%s" WHERE uid = "%s"' % (address, uid)) elif 'usdt' == coin_name: sql_module.insert_data( 'UPDATE user_address SET bind_usdt_address = "%s" WHERE uid = "%s"' % (address, uid)) else: return server_data.server_api_result(False, 'UnSupport Coin') return server_data.server_api_result(True)
def get_coin_k_line(tornado_object): pair_name = tornado_object.get_argument('pair') time_interval = tornado_object.get_argument('interval') if not time_interval: time_interval = '1min' if not pair_name: return server_data.server_api_result(False, 'Lost Argument') return market_manager.get_k_line(pair_name, time_interval)