def table(): stocks = StockDb.query.all() total = Stock.get_total(stocks) form = AddStockForm() if request.method == 'POST': stock_symbol = request.form['stock_symbol'] num_of_shares = request.form['num_of_shares'] purchase_price = request.form['purchase_price'] stock = Stock(stock_symbol, num_of_shares, purchase_price) info = stock.get_stock_data() stock = StockDb( id=info['_id'], full_name=info['full_name'], stock_symbol=info['stock_symbol'], shares=info['shares'], purchase_price=info['purchase_price'], net_buy_price=info['net_buy_price'], logo=info['logo'] ) db.create_all() db.session.add(stock) db.session.commit() flash(f'{stock_symbol.upper()} stock was added successfully', 'alert-success') return redirect(url_for('stocks.table')) return render_template('stocks/table.html', stocks=stocks, Stock=Stock, total=total, form=form)
def run(cls): uber = Stock(symbol='uber', volume=5000000) apple = Stock(symbol='aapl', volume=5000000) db.session.add(uber) db.session.add(apple) db.session.commit()
def resource_create_stock(ticker): stock_repository = (ApplicationContext.instance().stock_repository) stock = Stock.from_dataclass( stock_dc.StockIndicatorDataclass.from_json(request.data)) stock_repository.create(stock) return ({}, StatusCode.CREATED.value, HttpHeaders.JSON_HEADER.value)
def __create_stock_daily(request, date, indicator): stock_repository = ApplicationContext.instance().stock_repository for days in range(9): today = get_business_day(get_business_day(date, -8), days) stock = stock_repository.find_stock_by_ticker_and_timeframe_and_date( request.ticker, request.time_frame, str(today)) if not stock: dataclass = __create_stock(request, today, indicator) stock = stock_repository.create(Stock.from_dataclass(dataclass)) return stock
def money_homepage(): """ 使用这个api来获取资金总览页面的表格 --- tags: - MoneyHomePage responses: 200: description: 获取图表成功,返回库存总金额,销售金额,盈利,邮费 schema: $ref: "#/definitions/MoneyPage" definitions: MoneyPage: properties: stockMoney: type: integer example: 1000 orderSold: type: integer example: 2000 orderProfit: type: integer example: 500 orderPost: type: integer example: 100 orderPurchase: type: integer example: 1400 """ stock = Stock() stock_money = StockMoney() order = Order() order_money = OrderMoney() stock_total_money = get_total_money(stock, stock_money, 'stock')['total_money'] order_get_money = get_total_money(order, order_money, 'order') order_sold = order_get_money['total_money'] order_profit = order_get_money['total_profit'] order_post = order_get_money['total_post'] order_purchase = order_sold - order_profit - order_post back_data = { "stockMoney": stock_total_money, "orderPurchase": order_purchase, "orderSold": order_sold, "orderProfit": order_profit, "orderPost": order_post } return json.dumps(back_data), 200
def stock_homepage(): """ 使用这个api来获取库存总览图表 --- tags: - GetStockHomePage responses: 200: description: 获取图表成功,返回包含库存总额,总数和各个类别的库存总额和总数 schema: $ref: "#/definitions/StockGraph" definitions: StockGraph: properties: overview: type: object example: {"num":85,"total":56700} types: type: array description: 库存类型 example: ["Phone","Pad","Computer","Accessories","EarPhone","Other"] num: type: array description: 类型对应数量 example: [10,10,1,50,10,4] total: type: array description: 类型对应库存金额 example: [10000,40000,4000,2000,200,500] """ stock = Stock() money = StockMoney() type_dict = { "overview": { "num": 0, "total": 0 }, "types": ["Phone", "Pad", "Computer", "Accessories", "EarPhones", "Other"], "num": [0, 0, 0, 0, 0, 0], "total": [0, 0, 0, 0, 0, 0] } type_dict = get_stock_page(stock, money, type_dict) return json.dumps(type_dict)
def __create_stock_weekly(request, date, indicator): stock_repository = ApplicationContext.instance().stock_repository count = 0 for key, value in indicator.reverse_prices.items(): if count == 7: break key_date = datetime.strptime(key, '%Y-%m-%d').date() if key_date > date: continue count += 1 stock = stock_repository.find_stock_by_ticker_and_timeframe_and_date( request.ticker, request.time_frame, key) if not stock: dataclass = __create_stock(request, key_date, indicator) stock = stock_repository.create(Stock.from_dataclass(dataclass)) return stock_repository.find_stock_by_ticker_and_timeframe_and_date( request.ticker, request.time_frame, str(date))
def add_stock(): """ 使用这个api来添加库存 --- tags: - AddStock parameters: parameters: - name: userId in: body type: integer required: true description: 创建库存人id example: 1 - name: stock in: body type: object required: true description: 需要的库存数据 properties: productType: type: array description: 产品类型 example: ['Pad'] productName: type: string description: 产品名称 example: iPhone productDescription: type: object description: 机器的详细描述(颜色,外观,内存,储存) properties: color: type: string description: 颜色 example: silver outlook: type: string description: 外观 example: 新 memory: type: string description: 内存 example: 8G storage: type: string description: 内存 example: 1024 platform: type: string description: 收购平台 example: vx money: type: object description: 钱 properties: price: type: integer description: 单价 example: 100 num: type: integer description: 数量 example: 20 creator: type: string description: 创建人 example: W contact: type: string description: 联系方式 example: 182****9597 note: type: string description: 备注 example: admin responses: 200: description: 创建库存成功,返回一个状态success schema: properties: status: type: string example: success 502: description: 创建库存失败,返回一个状态failed schema: properties: status: type: string example: failed """ get_data = request.get_json() # 获取stock信息 stock_info = get_data.get('stock') back_data = { 'userId': get_data.get('userId'), 'productType': stock_info.get('productType'), 'productName': stock_info.get('productName'), 'productDescription': stock_info.get('productDescription'), 'platform': stock_info.get('platform'), 'price': stock_info.get('money')['price'], 'num': stock_info.get('money')['num'], 'creator': stock_info.get('creator'), 'contact': stock_info.get('contact'), 'note': stock_info.get('note') } stock = Stock() stock_money = StockMoney() stock_creator = Creator() md = MoneyDetail() # 配置stock_info stock.userId = back_data['userId'] stock.dateTime = datetime.datetime.now() # 将productType 以字符串存入 product_type = '' for i in range(len(back_data['productType'])): product_type = product_type + str(back_data['productType'][i]) if i != len(back_data['productType']) - 1: product_type = product_type + '/' stock.productType = product_type stock.productName = back_data['productName'] stock.productDescription = str(back_data['productDescription']) stock.platform = back_data['platform'] stock.note = back_data['note'] stock.isSold = 0 # 配置stock_money stock_money.price = back_data['price'] stock_money.num = back_data['num'] stock_money.total = stock_money.price * stock_money.num # 配置stock_creator stock_creator.creator = back_data['creator'] stock_creator.contact = back_data['contact'] try: insert_stock(stock, stock_money, stock_creator) # 配置资金流水 md.moneyType = 1 md.typeId = stock.id md.productType = product_type md.productName = back_data['productName'] md.money = stock_money.total md.dateTime = datetime.datetime.now() add_object(md) back_json = {"status": "success"} current_app.logger.info('%s insert stock successfully', back_data['productName']) except: # TODO 错误之后数据库的id问题 back_json = {"status": "failed"} current_app.logger.error('创建库存发生错误') return json.dumps(back_json), 200
def seed_stocks(self): with self.app.app_context(): apple = Stock(symbol='aapl', volume=100) db.session.add(apple) db.session.commit()