def sell_stock(request, **kwargs): """ 卖出股票 """ from decimal import * import datetime UserBasic = kwargs.pop("Mem") extra_context = kwargs.pop("error_detail") print extra_context,'bbbbb' if not extra_context: template_name = "stock/sell_stock.html" amount = 0 if request.method =="POST": today = datetime.datetime.now() cursor = connection.cursor() prevDate = today + datetime.timedelta(days=1) sql_str = "SELECT * FROM rtyk_triple.stock_selling_poll where time >='%s' and time<'%s' and user_from_id=%s"%(today.strftime('%Y-%m-%d'),prevDate.strftime('%Y-%m-%d'),UserBasic.id) cursor.execute(sql_str) HasSellingStock = cursor.fetchall() SellingPoll = selling_poll(user_from = UserBasic) form = StockForm(request.POST,user=request.user, instance = SellingPoll) if form.is_valid(): seller_id = UserBasic.id user_to = form.cleaned_data['n_seller'].strip().upper() value = Decimal(form.cleaned_data['value']) # value = Decimal(stock_value) amount = form.cleaned_data['amount'] if not HasSellingStock: if not user_to and amount>2000: extra_context = "每次出售股票不能大于2000股" return HttpResponse(json.dumps(extra_context),mimetype="application/json") else: if not user_to: to_user_id = None else: if user_to == UserBasic.number: extra_context = "你不能向自己出售股票" return HttpResponse(json.dumps(extra_context),mimetype="application/json") amount = int(request.POST.get("direct_sell_amount")) to_user = user_basic.objects.filter(number = user_to)[0] extra_context = UserBasic.number+"向你定向售出"+str(amount)+"股,"+"单价"+str(value)+"元,"+"总价"+str(amount*value)+"元." # notification.send(to_user.user, "stock_sold_notice",extra_context,True, request.user) to_user_id = to_user.id if amount<=(UserBasic.stock_hold_0devide+UserBasic.stock_hold_1devide+UserBasic.stock_hold_2devide): extra_context = "你成功售出"+str(amount)+"股,单价"+str(value)+"元,总价"+str(amount*value)+"元." # url = reverse("stock_index")+"?message="+extra_context call_proc = CallProc() call_proc.CallProcFuc_4("stock_sell",seller_id,value,amount,to_user_id) else: extra_context = "你的股票余额不足" result = "结算成功" result = "结算失败" else: extra_context = "每天只能出售一次股票" else: extra_context = form.errors.items()[0][1] return HttpResponse(json.dumps(extra_context),mimetype="application/json")
def buy_stock(request,**kwargs): """ 购买股票 """ extra_context = kwargs.pop("error_detail") if not extra_context: lock = threading.Lock() UserBasic = kwargs.pop('Mem') buy_amount = 0 if request.method == "POST": form = StockForm(request.POST,user = request.user) if form.is_valid(): seller_number = form.cleaned_data['n_seller'] amount = form.cleaned_data['amount'] _value = Decimal(form.cleaned_data['value']) total_money = UserBasic.cash + UserBasic.stock_repeat + UserBasic.stock_rebuy if total_money< (amount * _value): extra_context = "没有足够的余额" else: if not seller_number: Stocks = selling_poll.objects.filter(value__lte = _value).exclude(user_from = UserBasic).order_by('value') else: seller = user_basic.objects.filter(number = seller_number)[0] Stocks = selling_poll.objects.filter(value__lte = _value, user_from = seller).order_by('value') lock.acquire() # try: buy_amount = buy(request,Stocks,amount,UserBasic.id) if buy_amount == 0: extra_context = "购买失败,没有符合你要求的股票" else: extra_context = "你成功买入了"+str(buy_amount)+"股" # finally: lock.release() else: extra_context = "二级密码错误" return HttpResponse(json.dumps(extra_context),mimetype="application/json")