fix: 增加对记录的查询再新增的操作

This commit is contained in:
chenwj 2024-08-01 11:43:28 +08:00
parent 9f99c2a2b4
commit 7ac4e658bf
4 changed files with 83 additions and 69 deletions

View File

@ -4,8 +4,10 @@ use std::{env, time::Duration};
use chrono::{Local, NaiveDate};
use regex::Regex;
use scraper::{Html, Selector};
use sea_orm::{ActiveModelTrait, ActiveValue::Set, ConnectOptions, Database};
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter};
use sea_orm::{ActiveModelTrait, ConnectOptions, Database};
use crate::model::prelude::*;
use crate::model::{sd, pls, plw};
pub async fn get_data_from_500_com(issue_type: &str) -> Result<String, String> {
@ -67,73 +69,85 @@ pub async fn get_data_from_500_com(issue_type: &str) -> Result<String, String> {
let code_double = numbers.iter().filter(|&&x| x % 2 == 0).count() as i32;
if issue_type == "sd" {
let sd_record = Sd::find().filter(sd::Column::DrawIssue.eq(issue.clone())).one(&db).await.map_err(|e| e.to_string())?;
if sd_record.is_none() {
let group_type = if unique_numbers.len() == 3 { 6 } else if unique_numbers.len() == 2{ 3 } else {1};
let new_model = sd::ActiveModel {
draw_issue: Set(Some(issue)),
draw_code: Set(Some(ball)),
draw_date: Set(Some(date)),
created_at: Set(Some(Local::now().naive_local())),
sum_num: Set(Some(sum)),
code_small: Set(Some(code_small)),
code_big: Set(Some(code_big)),
code_single: Set(Some(code_single)),
code_double: Set(Some(code_double)),
hundred: Set(Some(numbers[0])),
ten: Set(Some(numbers[1])),
one: Set(Some(numbers[2])),
sum_hundred_one: Set(Some(numbers[0] + numbers[2])),
sum_hundred_ten: Set(Some(numbers[0] + numbers[1])),
sum_ten_one: Set(Some(numbers[1] + numbers[2])),
group_type: Set(Some(group_type)),
let sd_model = sd::Model {
draw_issue:issue.into(),
draw_code: ball.into(),
draw_date: Some(date),
created_at: Some(Local::now().naive_local()),
sum_num: sum.into(),
code_small: code_small.into(),
code_big: code_big.into(),
code_single: code_single.into(),
code_double: code_double.into(),
hundred: numbers[0].into(),
ten: numbers[1].into(),
one: numbers[2].into(),
sum_hundred_one: (numbers[0] + numbers[2]).into(),
sum_hundred_ten: (numbers[0] + numbers[1]).into(),
sum_ten_one: (numbers[1] + numbers[2]).into(),
group_type: group_type.into(),
..Default::default()
};
new_model.insert(&db).await.expect("insert error");
let new_model = sd::ActiveModel::from(sd_model);
new_model.insert(&db).await.map_err(|_e| "福彩3D数据插入失败")?;
}
} else if issue_type == "pls" {
let pls_record = Pls::find().filter(pls::Column::DrawIssue.eq(issue.clone())).one(&db).await.map_err(|e| e.to_string())?;
if pls_record.is_none() {
let group_type = if unique_numbers.len() == 3 { 6 } else if unique_numbers.len() == 2{ 3 } else {1};
let new_model = pls::ActiveModel {
draw_issue: Set(Some(issue)),
draw_code: Set(Some(ball)),
draw_date: Set(Some(date)),
created_at: Set(Some(Local::now().naive_local())),
sum_num: Set(Some(sum)),
code_small: Set(Some(code_small)),
code_big: Set(Some(code_big)),
code_single: Set(Some(code_single)),
code_double: Set(Some(code_double)),
hundred: Set(Some(numbers[0])),
ten: Set(Some(numbers[1])),
one: Set(Some(numbers[2])),
sum_hundred_one: Set(Some(numbers[0] + numbers[2])),
sum_hundred_ten: Set(Some(numbers[0] + numbers[1])),
sum_ten_one: Set(Some(numbers[1] + numbers[2])),
group_type: Set(Some(group_type)),
let pls_model = pls::Model {
draw_issue:issue.into(),
draw_code: ball.into(),
draw_date: Some(date),
created_at: Some(Local::now().naive_local()),
sum_num: sum.into(),
code_small: code_small.into(),
code_big: code_big.into(),
code_single: code_single.into(),
code_double: code_double.into(),
hundred: numbers[0].into(),
ten: numbers[1].into(),
one: numbers[2].into(),
sum_hundred_one: (numbers[0] + numbers[2]).into(),
sum_hundred_ten: (numbers[0] + numbers[1]).into(),
sum_ten_one: (numbers[1] + numbers[2]).into(),
group_type: group_type.into(),
..Default::default()
};
new_model.insert(&db).await.expect("insert error");
let new_model = pls::ActiveModel::from(pls_model);
new_model.insert(&db).await.map_err(|_e| "排列3数据插入失败")?;
}
} else if issue_type == "plw" {
let new_model = plw::ActiveModel {
draw_issue: Set(Some(issue)),
draw_code: Set(Some(ball)),
draw_date: Set(Some(date)),
created_at: Set(Some(Local::now().naive_local())),
sum_num: Set(Some(sum)),
code_small: Set(Some(code_small)),
code_big: Set(Some(code_big)),
code_single: Set(Some(code_single)),
code_double: Set(Some(code_double)),
ten_thousand: Set(Some(numbers[0])),
thousand: Set(Some(numbers[1])),
hundred: Set(Some(numbers[2])),
ten: Set(Some(numbers[3])),
one: Set(Some(numbers[4])),
sum_hundred_one: Set(Some(numbers[2] + numbers[4])),
sum_hundred_ten: Set(Some(numbers[2] + numbers[3])),
sum_ten_one: Set(Some(numbers[3] + numbers[4])),
sum_first_3: Set(Some(numbers[0] + numbers[1] + numbers[2])),
sum_next_3: Set(Some(numbers[2] + numbers[3] + numbers[4])),
let plw_record = Plw::find().filter(plw::Column::DrawIssue.eq(issue.clone())).one(&db).await.map_err(|e| e.to_string())?;
if plw_record.is_none() {
let plw_model = plw::Model {
draw_issue:issue.into(),
draw_code: ball.into(),
draw_date: Some(date),
created_at: Some(Local::now().naive_local()),
sum_num: sum.into(),
code_small: code_small.into(),
code_big: code_big.into(),
code_single: code_single.into(),
code_double: code_double.into(),
ten_thousand: numbers[0].into(),
thousand: numbers[1].into(),
hundred: numbers[2].into(),
ten: numbers[3].into(),
one: numbers[4].into(),
sum_hundred_one: (numbers[2] + numbers[4]).into(),
sum_hundred_ten: (numbers[2] + numbers[3]).into(),
sum_ten_one: (numbers[3] + numbers[4]).into(),
sum_first_3: (numbers[0] + numbers[1] + numbers[2]).into(),
sum_next_3: (numbers[1] + numbers[2] + numbers[3]).into(),
..Default::default()
};
new_model.insert(&db).await.expect("insert error");
let new_model = plw::ActiveModel::from(plw_model);
new_model.insert(&db).await.map_err(|_e| "排列五数据插入失败")?;
}
}
// 返回获取的数据
Ok(ret_val)

View File

@ -2,7 +2,7 @@
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[derive(Clone, Debug, Default, PartialEq, DeriveEntityModel, Eq)]
#[sea_orm(table_name = "pls")]
pub struct Model {
#[sea_orm(primary_key)]

View File

@ -2,7 +2,7 @@
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[derive(Clone, Debug, Default, PartialEq, DeriveEntityModel, Eq)]
#[sea_orm(table_name = "plw")]
pub struct Model {
#[sea_orm(primary_key)]

View File

@ -2,7 +2,7 @@
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[derive(Clone, Debug, Default, PartialEq, DeriveEntityModel, Eq)]
#[sea_orm(table_name = "sd")]
pub struct Model {
#[sea_orm(primary_key)]