def shopHandler(sid):
    # get shop info
    if request.method == 'GET':
        shop = get_shop_detail(sid)
        logger.info(f'try to get shop: id: {sid} info')
        if shop is None:
            return jsonify(status=False, message='shop not existed', data='')
        else:
            shop = shop.serialize()
            return jsonify(status=True, message='succeed', data=shop)
    # update shop info
    elif request.method == 'PUT':
        shopInfo = form2Dict(request.json, {'id': sid, 'name': '', 'description': '', 'img': ''})
        logger.info(f'try to update shop: id: {sid} info: {shopInfo}')
        status = update_shop_info(shopInfo)
        if status:
            logger.info(f'succeed to update shop: id: {sid} info')
            return jsonify(status=True, message='succeed', data='')
        else:
            logger.info(f'fail to update shop: id: {sid} info')
            return jsonify(status=False, message='failed', data='')
    # delete shop
    else:
        # 首先删除销量数据和店铺商品
        logger.info(f'try to delete shop: id: {sid} info')
        delete_records_by_sid(sid)
        delete_products_by_sid(sid)
        status = delete_shop(sid)
        if status:
            return jsonify(status=True, message='succeed', data='')
        else:
            return jsonify(status=False, message='failed', data='')
예제 #2
0
def productHandler(pid):
    # get product info
    if request.method == 'GET':
        product = get_product_detail_by_pid(pid)
        if product is not None:
            product = product.serialize()
            product["type"] = json.loads(product["type"])
            return jsonify(status=True, message='succeed', data=product)
        else:
            return jsonify(status=False,
                           message='product does not exist',
                           data='')
    # update product info
    elif request.method == 'PUT':
        productInfo = form2Dict(request.json, {'id':'-1', 'name': '', 'status':'on-sale', \
            'description': '', 'type':'', 'img': ''})
        productInfo['type'] = ast.literal_eval(productInfo['type'])
        for key in productInfo['type'].keys():
            productInfo['type'][key] = int(productInfo['type'][key])
        productInfo['type'] = json.dumps(productInfo['type'])
        status = update_product_info(productInfo)
        if status:
            return jsonify(status=True, message='succeed', data='')
        else:
            return jsonify(status=False, message='failed', data='')
    # delete product
    else:
        delete_records_by_pid(pid)
        status, sid = delete_product_by_pid(pid)
        if status:
            increase_shop_product_amount(sid, -1)
            return jsonify(status=True, message='succeed', data='')
        else:
            return jsonify(status=False, message='failed', data='')
예제 #3
0
def createProduct():
    productInfo = form2Dict(request.json, {'name': '', 'status':'on-sale', 'description': '', \
        'img': 'default-product.png', 'sid': '-1', 'shop': '', 'type':'', 'salesVolumes': 0})
    productInfo['type'] = json.dumps(ast.literal_eval(productInfo['type']))
    if productInfo['img'] == '':
        productInfo['img'] = 'default-product.png'
    pid = create_product(productInfo)
    increase_shop_product_amount(productInfo['sid'], 1)
    return jsonify(status=True, message='succeed', data={'pid': pid})
def createShop():
    username = session.get('username')
    uid = get_uid_by_username(username)
    shopInfo = form2Dict(request.json, {'name': '', 'description': '', 'img': 'default-shop.jpeg', 'uid': uid})
    if shopInfo['img'] == '':
        shopInfo['img'] = 'default-shop.jpeg'
    logger.info(f'user: {username} try to create shop:{shopInfo}')
    sid = create_shop(shopInfo)
    logger.info(f'shop-id: {sid} created')
    return jsonify(status=True, message='succeed', data={'sid': sid})
def salesRecordHandler(pid):
    # get record info
    if request.method == 'GET':
        rdate = request.args.get('date', date.today().isoformat())
        rdate = date.fromisoformat(rdate)
        record = get_record_one_day(pid, rdate)
        if record is None:
            return jsonify(status=False, message='failed', data='')
        return jsonify(status=True, message='succeed', data=record.serialize())
    # update record info
    elif request.method == 'PUT':
        recordDate = request.json.get('date', date.today().isoformat())
        recordDate = date.fromisoformat(recordDate)
        newSales = json.dumps(ast.literal_eval(request.json.get('sales', '')))
        # 更新记录表
        originRecord = get_record_one_day(pid, recordDate)
        if originRecord is not None:
            originSalesCount = getSalesCountfromSalesStr(originRecord.sales)
            newSalesCount = getSalesCountfromSalesStr(newSales)
            # 更新各销量
            update_record_sales(pid, recordDate, newSales)
            increase_shop_sales(originRecord.sid, newSalesCount - originSalesCount)
            increase_product_sales(pid, newSalesCount - originSalesCount)
            # 更新商品库存
            update_product_inventory(pid, True, originRecord.sales)
            update_product_inventory(pid, False, newSales)
            return jsonify(status=True, message='succeed', data='')
        else:
            recordInfo = form2Dict(request.json, {'pid': '', 'sid': '', 'pname': '', 'date': date.today().isoformat(), 'sales': ''})
            recordInfo['date'] = date.fromisoformat(recordInfo['date'])
            recordInfo['sales'] = json.dumps(ast.literal_eval(recordInfo['sales']))
            rid = create_new_record(recordInfo)
            salesCount = getSalesCountfromSalesStr(recordInfo['sales'])
            # 更新库存
            update_product_inventory(recordInfo['pid'], False, recordInfo['sales'])
            # 更新商品、店铺销量
            increase_product_sales(recordInfo['pid'], salesCount)
            increase_shop_sales(recordInfo['sid'], salesCount)
            return jsonify(status=True, message='create new record', data={'rid': rid})
    # delete record
    else:
        recordDate = request.json.get('date', date.today().isoformat())
        recordDate = date.fromisoformat(recordDate)
        originRecord = get_record_one_day(pid, recordDate)
        if originRecord  is not None:
            originSalesCount = getSalesCountfromSalesStr(originRecord['sales'])
            # 减少商品销量
            increase_shop_sales(originRecord['sid'], -originSalesCount)
            increase_product_sales(pid, -originSalesCount)
            # 恢复库存
            update_product_inventory(pid, True, originRecord['sales'])
            delete_record(pid, recordDate)
            return jsonify(status=True, message='succeed', data='')
        else:
            return jsonify(status=False, message='failed', data='')
def createSalesRecord():
    recordInfo = form2Dict(request.json, {'pid': '', 'sid': '', 'pname': '', 'date': date.today().isoformat(), 'sales': ''})
    recordInfo['date'] = date.fromisoformat(recordInfo['date'])
    recordInfo['sales'] = json.dumps(ast.literal_eval(recordInfo['sales']))
    rid = create_new_record(recordInfo)
    salesCount = getSalesCountfromSalesStr(recordInfo['sales'])
    # 更新库存
    update_product_inventory(recordInfo['pid'], False, recordInfo['sales'])
    # 更新商品、店铺销量
    increase_product_sales(recordInfo['pid'], salesCount)
    increase_shop_sales(recordInfo['sid'], salesCount)
    return jsonify(status=True, message='succeed', data={'rid': rid})
예제 #7
0
def register():
    if request.method == 'GET':
        username = request.args.get('username')
        exist = username_exist(username)
        if exist[0]:
            logger.warning(f'register failed, username:{username} has existed')
            return jsonify(status=False,
                           message="username has existed",
                           data='')
        else:
            logger.info('username available')
            return jsonify(status=True, message="username available", data='')
    else:
        userInfo = form2Dict(request.json, {
            'username': '',
            'password': '',
            'phone': ''
        })
        status, uid = create_user(userInfo)
        if status:
            return jsonify(status=True, message="succeed", data={'uid': uid})
        else:
            return jsonify(status=False, message="failed", data='')