From 7ac4e658bf383046c1b7bdbe91ed8f4d342aa5d4 Mon Sep 17 00:00:00 2001 From: chenwj Date: Thu, 1 Aug 2024 11:43:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=AF=B9=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E6=9F=A5=E8=AF=A2=E5=86=8D=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=9A=84=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tasks/get_data.rs | 146 ++++++++++++++++++++++------------------- src/tasks/model/pls.rs | 2 +- src/tasks/model/plw.rs | 2 +- src/tasks/model/sd.rs | 2 +- 4 files changed, 83 insertions(+), 69 deletions(-) diff --git a/src/tasks/get_data.rs b/src/tasks/get_data.rs index 1e9f107..4508c28 100644 --- a/src/tasks/get_data.rs +++ b/src/tasks/get_data.rs @@ -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 { @@ -67,73 +69,85 @@ pub async fn get_data_from_500_com(issue_type: &str) -> Result { let code_double = numbers.iter().filter(|&&x| x % 2 == 0).count() as i32; if issue_type == "sd" { - 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)), - ..Default::default() - }; - new_model.insert(&db).await.expect("insert error"); + 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 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() + }; + let new_model = sd::ActiveModel::from(sd_model); + new_model.insert(&db).await.map_err(|_e| "福彩3D数据插入失败")?; + } } else if issue_type == "pls" { - 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)), - ..Default::default() - }; - new_model.insert(&db).await.expect("insert error"); + 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 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() + }; + 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])), - ..Default::default() - }; - new_model.insert(&db).await.expect("insert error"); + 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() + }; + let new_model = plw::ActiveModel::from(plw_model); + new_model.insert(&db).await.map_err(|_e| "排列五数据插入失败")?; + } } // 返回获取的数据 Ok(ret_val) diff --git a/src/tasks/model/pls.rs b/src/tasks/model/pls.rs index 141fde4..05d08f9 100644 --- a/src/tasks/model/pls.rs +++ b/src/tasks/model/pls.rs @@ -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)] diff --git a/src/tasks/model/plw.rs b/src/tasks/model/plw.rs index 1ba3129..8f7bec0 100644 --- a/src/tasks/model/plw.rs +++ b/src/tasks/model/plw.rs @@ -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)] diff --git a/src/tasks/model/sd.rs b/src/tasks/model/sd.rs index bc228cb..7971b46 100644 --- a/src/tasks/model/sd.rs +++ b/src/tasks/model/sd.rs @@ -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)]