def transactions_buy(request): stock_id = request.POST.get('buy_stock_id') stock_count = request.POST.get('buy_stock_count') stock_price = request.POST.get('buy_stock_price') print(stock_id, stock_count, stock_price) try: nonce = web3.eth.getTransactionCount( web3.toChecksumAddress(request.session.get('address'))) txn_dict = action.functions.buy( int(stock_id), int(stock_count), int(stock_price)).buildTransaction({ 'value': int(stock_price) * int(stock_count) * 10**18, 'nonce': nonce, "from": web3.toChecksumAddress(request.session.get('address')), }) signed_txn = web3.eth.account.signTransaction( txn_dict, private_key=request.session.get('private_key')) result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction) except Exception as tips: print(tips) return JsonResponse({'status': 0}) return JsonResponse({'status': 1})
def sell(request): """买入队列 抛出逻辑""" buy_index = request.GET.get('buys_index') buys = [json.loads(i) for i in red.lrange('buys', 0, -1)] print('index.sell()', buy_index, buys) for i in buys: if i.get('buys_index') == int(buy_index): stock_id = i.get('stock_id') stock_count = i.get('stock_count') stock_price = i.get('stock_price') try: nonce = web3.eth.getTransactionCount( web3.toChecksumAddress(request.session.get('address'))) txn_dict = action.functions.sell( int(stock_id), int(stock_count), int(stock_price)).buildTransaction({ 'nonce': nonce, "from": web3.toChecksumAddress(request.session.get('address')), }) signed_txn = web3.eth.account.signTransaction( txn_dict, private_key=request.session.get('private_key')) result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction) except Exception as tips: print(tips) return JsonResponse({'status': 0}) return JsonResponse({'status': 1})
def sell(request): """ 抛售股票的逻辑 """ stock_id = request.POST.get('sell_stock_id') stock_count = request.POST.get('sell_stock_count') stock_price = request.POST.get('sell_stock_price') print(stock_id, stock_count, stock_price) try: nonce = web3.eth.getTransactionCount( web3.toChecksumAddress(request.session.get('address'))) txn_dict = action.functions.sell( int(stock_id), int(stock_count), int(stock_price)).buildTransaction({ 'nonce': nonce, "from": web3.toChecksumAddress(request.session.get('address')), }) signed_txn = web3.eth.account.signTransaction( txn_dict, private_key=request.session.get('private_key')) result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction) except Exception as tips: print(tips) return JsonResponse({'status': 0}) address = request.session.get('address') balance = web3.fromWei(web3.eth.getBalance(address, 'latest'), 'ether') return JsonResponse({'status': 1, 'balance': str(balance)})
def get_list(request): """ 获取jqgrid的信息:用户所持股票的详情信息 """ address = request.session.get('address') private_key = request.session.get('private_key') data = [] print(address) nonce = web3.eth.getTransactionCount(web3.toChecksumAddress(address)) txn_dict = action.functions.get_stockers_all_stocks( web3.toChecksumAddress(address)).buildTransaction({ 'nonce': nonce, "from": web3.toChecksumAddress(address), }) signed_txn = web3.eth.account.signTransaction(txn_dict, private_key=private_key) result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction) id_count = action.functions.get_id_counts().call() stocks = list(zip(id_count[0], id_count[1])) print(stocks) for i in stocks: company_name = IPO.objects.get(stock_id=str(i[0])).company_name data.append({ 'stock_id': i[0], 'company_name': company_name, 'stock_count': i[1], 'status': '持有' }) rows = request.GET.get('rows', 4) page = request.GET.get('page', 1) paginator = Paginator(data, int(rows)) try: rows = list(paginator.page(page).object_list) except Exception as tips: print(tips) rows = list(paginator.page(int(page) - 1).object_list) page = int(page) - 1 page_data = { 'page': page, 'total': paginator.num_pages, 'records': paginator.count, 'rows': rows } return JsonResponse(page_data, safe=False)
def ipo_submit(request): company_name = request.POST.get('company_name') ipo_price = request.POST.get('ipo_price') ipo_count = request.POST.get('ipo_count') print(company_name, ipo_count, ipo_price) try: with transaction.atomic(): ipo = IPO.objects.create(company_name=company_name, ipo_price=ipo_price, ipo_count=ipo_count) nonce = web3.eth.getTransactionCount(web3.toChecksumAddress(request.session.get('address'))) txn_dict = action.functions.add_ipo(int(ipo.stock_id), int(ipo.ipo_count), int(ipo.ipo_price)).buildTransaction( { 'nonce': nonce, "from": web3.toChecksumAddress(request.session.get('address')), }) signed_txn = web3.eth.account.signTransaction(txn_dict, private_key=request.session.get('private_key')) result_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction) except Exception as tips: print(tips) return JsonResponse({'status': 0}) return JsonResponse({'status': 1})