import logging from django.db.models.signals import post_save from django.dispatch import receiver from pingcap_sso.models import SiteSetting, LarkMessage from pingcap_sso.tasks.pe import issue_pe_exchange_code logger = logging.getLogger(__name__) @receiver( post_save, sender="pingcap_sso.PointProductRedemptionRecord", dispatch_uid="_point_user_redeem_notify_admin") def _point_user_redeem_notify_admin(sender, instance, created, **kwargs): if not created: return notify_webhook = SiteSetting.points_user_redeem_notify_lark_webhook if not notify_webhook: return LarkMessage.send( webhook=notify_webhook, message_type=LarkMessage.MESSAGE_TYPE_POST, content={ "title": "积分系统,用户兑换礼物", "content": [ [ {"tag": "text", "text": "后台地址: "}, { "tag": "a", "text": "链接", "href": "https://accounts.pingcap.cn/manage#/points/orders" } ], [ {"tag": "text", "text": "用户名: "}, {"tag": "text", "text": instance.user.username} ], [ {"tag": "text", "text": "兑换产品: "}, {"tag": "text", "text": instance.product.name} ], [ {"tag": "text", "text": "花费积分: "}, {"tag": "text", "text": str(instance.points)} ], ] }, remark='积分系统,用户兑换礼物' ) @receiver( post_save, sender="pingcap_sso.PointProductRedemptionRecord", dispatch_uid="_point_user_redeem_pe_exchange_code") def _point_user_redeem_pe_exchange_code(sender, instance, created, **kwargs): if not created: return if instance.product.pe_exchange_code_id: issue_pe_exchange_code.apply_async((instance.id, ), countdown=10)