forked from erp-dev/erp
feat: message-api for mission via wecomm agent
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
|
||||
from mission.payload_processors import apply_mission_payload_processor
|
||||
from notifier.models import NotificationEventKeyEnum
|
||||
from notifier.services import enqueue_notification_event
|
||||
|
||||
@@ -26,6 +27,7 @@ def _build_mission_payload(mission) -> dict:
|
||||
"participant_names_display": "、".join(participant_names) if participant_names else "无",
|
||||
"content_type": content_type or "",
|
||||
"content_id": mission.content_id or "",
|
||||
"payload_processor": getattr(mission.category, "payload_processor", "") or "",
|
||||
}
|
||||
|
||||
|
||||
@@ -58,11 +60,15 @@ def _enqueue(*, event_key: str, merchant_id: int, payload: dict) -> None:
|
||||
|
||||
|
||||
def on_mission_created(sender, instance, created_by=None, **kwargs):
|
||||
payload = {
|
||||
**_build_mission_payload(instance),
|
||||
"created_by_id": getattr(created_by, "id", None),
|
||||
"created_by_name": getattr(created_by, "name", ""),
|
||||
}
|
||||
payload = apply_mission_payload_processor(
|
||||
mission=instance,
|
||||
event_key=NotificationEventKeyEnum.MISSION_CREATED,
|
||||
payload={
|
||||
**_build_mission_payload(instance),
|
||||
"created_by_id": getattr(created_by, "id", None),
|
||||
"created_by_name": getattr(created_by, "name", ""),
|
||||
},
|
||||
)
|
||||
_enqueue(
|
||||
event_key=NotificationEventKeyEnum.MISSION_CREATED,
|
||||
merchant_id=instance.merchant_id,
|
||||
@@ -72,12 +78,16 @@ def on_mission_created(sender, instance, created_by=None, **kwargs):
|
||||
|
||||
def on_mission_replied(sender, instance, mission=None, responder=None, **kwargs):
|
||||
mission = mission or instance.mission
|
||||
payload = {
|
||||
**_build_mission_payload(mission),
|
||||
**_build_reply_payload(instance),
|
||||
"responder_id": getattr(responder, "id", None),
|
||||
"responder_name": getattr(responder, "name", ""),
|
||||
}
|
||||
payload = apply_mission_payload_processor(
|
||||
mission=mission,
|
||||
event_key=NotificationEventKeyEnum.MISSION_REPLIED,
|
||||
payload={
|
||||
**_build_mission_payload(mission),
|
||||
**_build_reply_payload(instance),
|
||||
"responder_id": getattr(responder, "id", None),
|
||||
"responder_name": getattr(responder, "name", ""),
|
||||
},
|
||||
)
|
||||
_enqueue(
|
||||
event_key=NotificationEventKeyEnum.MISSION_REPLIED,
|
||||
merchant_id=mission.merchant_id,
|
||||
@@ -93,6 +103,11 @@ def on_mission_completed(sender, instance, completed_by=None, reply=None, **kwar
|
||||
}
|
||||
if reply is not None:
|
||||
payload.update(_build_reply_payload(reply))
|
||||
payload = apply_mission_payload_processor(
|
||||
mission=instance,
|
||||
event_key=NotificationEventKeyEnum.MISSION_COMPLETED,
|
||||
payload=payload,
|
||||
)
|
||||
_enqueue(
|
||||
event_key=NotificationEventKeyEnum.MISSION_COMPLETED,
|
||||
merchant_id=instance.merchant_id,
|
||||
@@ -102,13 +117,17 @@ def on_mission_completed(sender, instance, completed_by=None, reply=None, **kwar
|
||||
|
||||
def on_mission_reply_rejected(sender, instance, mission=None, rejected_by=None, reason=None, **kwargs):
|
||||
mission = mission or instance.mission
|
||||
payload = {
|
||||
**_build_mission_payload(mission),
|
||||
**_build_reply_payload(instance),
|
||||
"rejected_by_id": getattr(rejected_by, "id", None),
|
||||
"rejected_by_name": getattr(rejected_by, "name", ""),
|
||||
"reason": reason or "",
|
||||
}
|
||||
payload = apply_mission_payload_processor(
|
||||
mission=mission,
|
||||
event_key=NotificationEventKeyEnum.MISSION_REPLY_REJECTED,
|
||||
payload={
|
||||
**_build_mission_payload(mission),
|
||||
**_build_reply_payload(instance),
|
||||
"rejected_by_id": getattr(rejected_by, "id", None),
|
||||
"rejected_by_name": getattr(rejected_by, "name", ""),
|
||||
"reason": reason or "",
|
||||
},
|
||||
)
|
||||
_enqueue(
|
||||
event_key=NotificationEventKeyEnum.MISSION_REPLY_REJECTED,
|
||||
merchant_id=mission.merchant_id,
|
||||
@@ -117,13 +136,17 @@ def on_mission_reply_rejected(sender, instance, mission=None, rejected_by=None,
|
||||
|
||||
|
||||
def on_mission_reopened(sender, instance, reopened_by=None, rejected_reply_ids=None, **kwargs):
|
||||
payload = {
|
||||
**_build_mission_payload(instance),
|
||||
"reopened_by_id": getattr(reopened_by, "id", None),
|
||||
"reopened_by_name": getattr(reopened_by, "name", ""),
|
||||
"rejected_reply_ids": rejected_reply_ids or [],
|
||||
"rejected_reply_ids_display": ", ".join(str(reply_id) for reply_id in (rejected_reply_ids or [])) or "无",
|
||||
}
|
||||
payload = apply_mission_payload_processor(
|
||||
mission=instance,
|
||||
event_key=NotificationEventKeyEnum.MISSION_REOPENED,
|
||||
payload={
|
||||
**_build_mission_payload(instance),
|
||||
"reopened_by_id": getattr(reopened_by, "id", None),
|
||||
"reopened_by_name": getattr(reopened_by, "name", ""),
|
||||
"rejected_reply_ids": rejected_reply_ids or [],
|
||||
"rejected_reply_ids_display": ", ".join(str(reply_id) for reply_id in (rejected_reply_ids or [])) or "无",
|
||||
},
|
||||
)
|
||||
_enqueue(
|
||||
event_key=NotificationEventKeyEnum.MISSION_REOPENED,
|
||||
merchant_id=instance.merchant_id,
|
||||
@@ -132,12 +155,16 @@ def on_mission_reopened(sender, instance, reopened_by=None, rejected_reply_ids=N
|
||||
|
||||
|
||||
def on_mission_cancelled(sender, instance, cancelled_by=None, **kwargs):
|
||||
payload = {
|
||||
**_build_mission_payload(instance),
|
||||
"cancelled_by_id": getattr(cancelled_by, "id", None),
|
||||
"cancelled_by_name": getattr(cancelled_by, "name", ""),
|
||||
"cancelled_at": instance.cancelled_at.isoformat() if instance.cancelled_at else "",
|
||||
}
|
||||
payload = apply_mission_payload_processor(
|
||||
mission=instance,
|
||||
event_key=NotificationEventKeyEnum.MISSION_CANCELLED,
|
||||
payload={
|
||||
**_build_mission_payload(instance),
|
||||
"cancelled_by_id": getattr(cancelled_by, "id", None),
|
||||
"cancelled_by_name": getattr(cancelled_by, "name", ""),
|
||||
"cancelled_at": instance.cancelled_at.isoformat() if instance.cancelled_at else "",
|
||||
},
|
||||
)
|
||||
_enqueue(
|
||||
event_key=NotificationEventKeyEnum.MISSION_CANCELLED,
|
||||
merchant_id=instance.merchant_id,
|
||||
|
||||
Reference in New Issue
Block a user