美团众包抢单外置器, 美团众包抢单黑科技, 众包抢单辅助器(免费)【autojs分享】

432 阅读3分钟

下载地址:www.pan38.com/dow/share.p… 提取密码:2981

这个抢单插件系统包含三个主要模块:订单系统核心逻辑、模拟器和API服务。核心模块实现了用户注册、订单创建和抢单等基本功能,使用SQLite数据库存储数据。模拟器可以模拟多个用户同时抢单的场景,API服务提供了RESTful接口供外部调用。

import threading import time import random import sqlite3 from datetime import datetime

class OrderSystem: def init(self): self.orders = [] self.users = [] self.lock = threading.Lock() self.db_conn = sqlite3.connect('order_system.db', check_same_thread=False) self._init_db()

def _init_db(self):
    cursor = self.db_conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            username TEXT UNIQUE NOT NULL,
            password TEXT NOT NULL,
            balance REAL DEFAULT 0.0,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    ''')
    
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS orders (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT NOT NULL,
            description TEXT,
            price REAL NOT NULL,
            status TEXT DEFAULT 'pending',
            creator_id INTEGER,
            worker_id INTEGER,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY(creator_id) REFERENCES users(id),
            FOREIGN KEY(worker_id) REFERENCES users(id)
        )
    ''')
    self.db_conn.commit()

def register_user(self, username, password):
    try:
        cursor = self.db_conn.cursor()
        cursor.execute('INSERT INTO users (username, password) VALUES (?, ?)', 
                     (username, password))
        self.db_conn.commit()
        return True
    except sqlite3.IntegrityError:
        return False

def login(self, username, password):
    cursor = self.db_conn.cursor()
    cursor.execute('SELECT id FROM users WHERE username=? AND password=?', 
                  (username, password))
    result = cursor.fetchone()
    return result[0] if result else None

def create_order(self, user_id, title, description, price):
    cursor = self.db_conn.cursor()
    cursor.execute('''
        INSERT INTO orders (title, description, price, creator_id)
        VALUES (?, ?, ?, ?)
    ''', (title, description, price, user_id))
    self.db_conn.commit()
    return cursor.lastrowid

def grab_order(self, user_id, order_id):
    with self.lock:
        cursor = self.db_conn.cursor()
        cursor.execute('SELECT status FROM orders WHERE id=?', (order_id,))
        result = cursor.fetchone()
        
        if not result or result[0] != 'pending':
            return False
            
        cursor.execute('''
            UPDATE orders 
            SET status='taken', worker_id=?
            WHERE id=? AND status='pending'
        ''', (user_id, order_id))
        self.db_conn.commit()
        return cursor.rowcount > 0

def get_available_orders(self):
    cursor = self.db_conn.cursor()
    cursor.execute('''
        SELECT o.id, o.title, o.description, o.price, u.username
        FROM orders o
        JOIN users u ON o.creator_id = u.id
        WHERE o.status='pending'
    ''')
    return cursor.fetchall()

def complete_order(self, order_id):
    cursor = self.db_conn.cursor()
    cursor.execute('''
        UPDATE orders SET status='completed' 
        WHERE id=? AND status='taken'
    ''', (order_id,))
    self.db_conn.commit()
    return cursor.rowcount > 0

def transfer_payment(self, order_id):
    cursor = self.db_conn.cursor()
    cursor.execute('''
        SELECT price, creator_id, worker_id 
        FROM orders 
        WHERE id=? AND status='completed'
    ''', (order_id,))
    result = cursor.fetchone()
    
    if not result:
        return False
        
    price, creator_id, worker_id = result
    
    try:
        cursor.execute('UPDATE users SET balance=balance-? WHERE id=?', 
                     (price, creator_id))
        cursor.execute('UPDATE users SET balance=balance+? WHERE id=?', 
                     (price, worker_id))
        cursor.execute('UPDATE orders SET status='paid' WHERE id=?', 
                     (order_id,))
        self.db_conn.commit()
        return True
    except:
        self.db_conn.rollback()
        return False

order_system import OrderSystem import random import threading import time

class OrderSimulator: def init(self, order_system): self.system = order_system self.user_count = 10 self.order_count = 20 self.users = []

def setup(self):
    # 创建测试用户
    for i in range(self.user_count):
        username = f'user{i}'
        password = 'password'
        self.system.register_user(username, password)
        user_id = self.system.login(username, password)
        self.users.append(user_id)
        
    # 创建测试订单
    for i in range(self.order_count):
        creator = random.choice(self.users)
        title = f'订单{i}'
        description = f'这是第{i}个测试订单的描述'
        price = round(random.uniform(10, 100), 2)
        self.system.create_order(creator, title, description, price)
        
def simulate_grab(self, user_id):
    while True:
        orders = self.system.get_available_orders()
        if not orders:
            time.sleep(1)
            continue
            
        order_id = random.choice(orders)[0]
        if self.system.grab_order(user_id, order_id):
            print(f'用户{user_id}成功抢到订单{order_id}')
            # 模拟工作完成
            time.sleep(random.uniform(0.5, 2))
            self.system.complete_order(order_id)
            self.system.transfer_payment(order_id)
        else:
            print(f'用户{user_id}抢单{order_id}失败')
        time.sleep(random.uniform(0.1, 0.5))
        
def run(self, worker_count=5):
    self.setup()
    threads = []
    
    for i in range(worker_count):
        user_id = random.choice(self.users)
        t = threading.Thread(target=self.simulate_grab, args=(user_id,))
        t.daemon = True
        threads.append(t)
        t.start()
        
    for t in threads:
        t.join()

if name == 'main': system = OrderSystem() simulator = OrderSimulator(system) simulator.run(worker_count=8) from flask import Flask, request, jsonify from order_system import OrderSystem import json

app = Flask(name) system = OrderSystem()

@app.route('/register', methods=['POST']) def register(): data = request.get_json() if not data or 'username' not in data or 'password' not in data: return jsonify({'error': 'Invalid data'}), 400

success = system.register_user(data['username'], data['password'])
return jsonify({'success': success}), 200 if success else 400

@app.route('/login', methods=['POST']) def login(): data = request.get_json() if not data or 'username' not in data or 'password' not in data: return jsonify({'error': 'Invalid data'}), 400

user_id = system.login(data['username'], data['password'])
return jsonify({'user_id': user_id}), 200 if user_id else 401

@app.route('/orders', methods=['GET']) def get_orders(): orders = system.get_available_orders() return jsonify({'orders': [ { 'id': o[0], 'title': o[1], 'description': o[2], 'price': o[3], 'creator': o[4] } for o in orders ]}), 200

@app.route('/orders', methods=['POST']) def create_order(): data = request.get_json() if not data or 'user_id' not in data or 'title' not in data or 'price' not in data: return jsonify({'error': 'Invalid data'}), 400

order_id = system.create_order(
    data['user_id'],
    data['title'],
    data.get('description', ''),
    data['price']
)
return jsonify({'order_id': order_id}), 201

@app.route('/orders/int:order_id/grab', methods=['POST']) def grab_order(order_id): data = request.get_json() if not data or 'user_id' not in data: return jsonify({'error': 'Invalid data'}), 400

success = system.grab_order(data['user_id'], order_id)
return jsonify({'success': success}), 200 if success else 400

if name == 'main': app.run(debug=True, port=5000)