Skip to content

Commit f9093ad

Browse files
committed
reach: use default module, add reach log
1 parent b41630c commit f9093ad

File tree

4 files changed

+62
-12
lines changed

4 files changed

+62
-12
lines changed

basic/src/rbum/dto/rbum_item_dto.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,19 @@ pub struct RbumItemAddReq {
2727
pub disabled: Option<bool>,
2828
}
2929

30+
impl Default for RbumItemAddReq {
31+
fn default() -> Self {
32+
Self {
33+
id: Default::default(),
34+
code: Default::default(),
35+
name: TrimString::from(""),
36+
rel_rbum_kind_id: Default::default(),
37+
rel_rbum_domain_id: Default::default(),
38+
scope_level: Default::default(),
39+
disabled: Default::default(),
40+
}
41+
}
42+
}
3043
/// For security reasons, this object cannot be used as an input to the API
3144
#[derive(Serialize, Deserialize, Debug)]
3245
#[serde(default)]

services/bios-all/src/initializer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub async fn init(web_server: &TardisWebServer) -> TardisResult<()> {
1111
web_server,
1212
SendChannelMap::new()
1313
.with_arc_channel(bios_client_hwsms::SmsClient::from_reach_config())
14-
.with_arc_channel(Arc::new(tardis::TardisFuns::mail_by_module(bios_reach::reach_consts::MODULE_CODE))),
14+
.with_arc_channel(Arc::new(tardis::TardisFuns::mail_by_module_or_default(bios_reach::reach_consts::MODULE_CODE))),
1515
)
1616
.await?;
1717

support/reach/src/serv/message_send.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ use std::collections::{HashMap, HashSet};
22

33
use bios_basic::rbum::{dto::rbum_item_dto::RbumItemAddReq, serv::rbum_crud_serv::RbumCrudOperation};
44
use tardis::{
5-
basic::{result::TardisResult, dto::TardisContext},
5+
basic::{dto::TardisContext, result::TardisResult},
66
db::sea_orm::{sea_query::Query, ColumnTrait, Iterable},
77
TardisFunsInst,
88
};
99

10-
use crate::{reach_consts::*, domain, dto::*, serv::*};
10+
use crate::{domain, dto::*, reach_consts::*, serv::*};
1111

1212
pub async fn message_send(send_req: ReachMsgSendReq, funs: &TardisFunsInst, ctx: &TardisContext) -> TardisResult<()> {
1313
let err = |msg: &str| funs.err().not_found("reach", "event_listener", msg, "");
@@ -54,11 +54,11 @@ pub async fn message_send(send_req: ReachMsgSendReq, funs: &TardisFunsInst, ctx:
5454
map.entry(item.receive_group_code.clone()).or_default().push(item);
5555
map
5656
});
57-
58-
let mut instance_group_code = instances.into_iter().filter(|inst| receive_group_code.contains_key(&inst.receive_group_code.clone())).fold(HashMap::<String, Vec<_>>::new(), |mut map, item| {
59-
map.entry(item.receive_group_code.clone()).or_default().push(item);
60-
map
61-
});
57+
let mut instance_group_code =
58+
instances.into_iter().filter(|inst| receive_group_code.contains_key(&inst.receive_group_code.clone())).fold(HashMap::<String, Vec<_>>::new(), |mut map, item| {
59+
map.entry(item.receive_group_code.clone()).or_default().push(item);
60+
map
61+
});
6262

6363
if instance_group_code.is_empty() {
6464
return Ok(());

support/reach/src/task/message_send_listener.rs

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use std::{collections::HashSet, sync::Arc};
22

3-
use crate::{reach_send_channel::*, reach_config::ReachConfig, reach_consts::*, domain::*, dto::*, reach_init::get_reach_send_channel_map, serv::*};
4-
use bios_basic::rbum::helper::rbum_scope_helper;
3+
use crate::{domain::*, dto::*, reach_config::ReachConfig, reach_consts::*, reach_init::get_reach_send_channel_map, reach_send_channel::*, serv::*};
4+
use bios_basic::rbum::{helper::rbum_scope_helper, serv::rbum_crud_serv::RbumCrudOperation};
55
use bios_sdk_invoke::clients::iam_client::IamClient;
66
use tardis::{
77
basic::{dto::TardisContext, result::TardisResult},
8+
chrono::Utc,
89
db::sea_orm::{sea_query::Query, *},
910
log, tokio, TardisFunsInst,
1011
};
@@ -28,6 +29,7 @@ impl Default for MessageSendListener {
2829

2930
impl MessageSendListener {
3031
async fn execute_send_account(&self, message: message::Model, template: message_template::Model) -> TardisResult<()> {
32+
let content_replace: ContentReplace = message.content_replace.parse()?;
3133
let cfg = self.funs.conf::<ReachConfig>();
3234
let _lock = self.sync.lock().await;
3335
let ctx = TardisContext {
@@ -44,7 +46,7 @@ impl MessageSendListener {
4446
return Ok(());
4547
}
4648
let mut to = HashSet::new();
47-
49+
let start_time = Utc::now();
4850
let owner_path = rbum_scope_helper::get_pre_paths(RBUM_SCOPE_LEVEL_TENANT as i16, &message.own_paths).unwrap_or_default();
4951
for account_id in message.to_res_ids.split(ACCOUNT_SPLIT) {
5052
if let Ok(mut resp) = iam_client.get_account(account_id, &owner_path).await {
@@ -55,12 +57,47 @@ impl MessageSendListener {
5557
to.insert(phone);
5658
}
5759
}
58-
match self.channel.send(message.rel_reach_channel, &template, &message.content_replace.parse()?, &to).await {
60+
match self.channel.send(message.rel_reach_channel, &template, &content_replace, &to).await {
5961
Ok(_) => {
6062
ReachMessageServ::update_status(&message.id, ReachStatusKind::Sending, ReachStatusKind::SendSuccess, &self.funs, &ctx).await?;
63+
for rel_account_id in to {
64+
ReachMessageLogServ::add_rbum(
65+
&mut ReachMsgLogAddReq {
66+
rbum_add_req: Default::default(),
67+
dnd_time: Default::default(),
68+
rel_account_id,
69+
dnd_strategy: ReachDndStrategyKind::Ignore,
70+
start_time,
71+
end_time: Utc::now(),
72+
failure: false,
73+
fail_message: Default::default(),
74+
rel_reach_message_id: message.id.clone(),
75+
},
76+
&self.funs,
77+
&ctx,
78+
).await?;
79+
}
6180
}
6281
Err(e) => {
6382
ReachMessageServ::update_status(&message.id, ReachStatusKind::Sending, ReachStatusKind::Fail, &self.funs, &ctx).await?;
83+
for rel_account_id in to {
84+
ReachMessageLogServ::add_rbum(
85+
&mut ReachMsgLogAddReq {
86+
rbum_add_req: Default::default(),
87+
dnd_time: Default::default(),
88+
rel_account_id,
89+
dnd_strategy: ReachDndStrategyKind::Ignore,
90+
start_time,
91+
end_time: Utc::now(),
92+
failure: true,
93+
fail_message: e.to_string(),
94+
rel_reach_message_id: message.id.clone(),
95+
},
96+
&self.funs,
97+
&ctx,
98+
).await?;
99+
}
100+
64101
return Err(e);
65102
}
66103
}

0 commit comments

Comments
 (0)