def pay_handler(): if request.method =='POST': data = request_form_to_dict() pid = int(data.get("pid")) count = int(data.get("amount")) period=Period.get(id=pid) time_now=datetime.now() left=period.total_count-period.join_count if left >= count: num = get_num(pid, count) # 创建或更新夺宝订单明细记录 create_or_update_order_detail(current_user.id, pid, { "count": count, "created_datetime": time_now, "num": num }) # 更新用户余额 update_user(current_user.id, current_user.balance - count) if left == count: kj_time = get_kj_time(time_now) update_period(pid, { "join_count": period.join_count + count, "status": 1, "end_time": time_now, "kj_count": create_kj_count(time_now), "kj_time": kj_time, }) create_period(period.product.id, period.total_count, period.number+ 1) else: update_period(pid,{ "join_count": period.join_count + count, }) return redirect(url_for('period_detail',pid=pid))
def update_period(pid, data): period = Period.get(id=int(pid)) if data.get("status"): period.join_count = data["join_count"] period.status = data["status"] period.end_time = data["end_time"] period.kj_count = data["kj_count"] period.kj_time = data["kj_time"] else: period.join_count = data["join_count"] period.save()
def get_num(pid, price): period = Period.get(id=pid) all_seq = str(period.all_num).split(' ') random_seq = random.sample(all_seq, price) random_text = ' '.join(random_seq) left_seq = set(all_seq) - set(random_seq) left_text = ' '.join(left_seq) period.all_num = left_text period.save() return random_text