diff --git a/apps/jqr/utils.py b/apps/jqr/utils.py new file mode 100644 index 0000000..0e0724c --- /dev/null +++ b/apps/jqr/utils.py @@ -0,0 +1,81 @@ +import logging + +from apps.jqr.choices import JqrSendGroupMsgIsOpenChoices, JqrSendGroupMsgSendUserTypeChoices, \ + JqrSendGroupMsgSendTagTypeChoices +from apps.jqr.models import JqrExternalUser, JqrHookUser, JqrNewUserSendGroupMsg, JqrExternalFollowUser +from apps.qc.models import QcCorpinfo + +logger = logging.getLogger('apps') + + +def get_jqr_new_send_msg_info(corpid, userid, external_userid): + try: + external_user = JqrExternalUser.objects.get(corpid=corpid, external_userid=external_userid) + except JqrExternalUser.DoesNotExist: + logger.error(f'corpid: {corpid}, external_userid: {external_userid}, 新客欢迎external_user不存在') + return + if not external_user.vid: + logger.error(f'corpid: {corpid}, external_userid: {external_userid}, 新客欢迎external_user没有vid') + return + try: + hook_user = JqrHookUser.objects.get(corpid=corpid, userid=userid) + except JqrHookUser.DoesNotExist: + logger.error(f'corpid: {corpid}, userid: {userid}, 新客欢迎hook_user不存在') + return + + if not hook_user.new_user: + logger.error(f'corpid: {corpid}, userid: {userid}, 新客欢迎hook_user没有开启新客欢迎') + return + settletaggroupid = '' + uid = hook_user.uid + corpid = hook_user.corpid + hook_user_userid = hook_user.userid + corp_info = QcCorpinfo.objects.filter(corpid=corpid, uid=uid).first() + if corp_info: + settletaggroupid = corp_info.settletaggroupid + jqr_new_user_send_msg_list = JqrNewUserSendGroupMsg.objects.filter(uid=uid, + isopen=JqrSendGroupMsgIsOpenChoices.OPEN).all() + jqr_new_user_send_group_msg = None + for send_msg in jqr_new_user_send_msg_list: + if send_msg.sendusertype == JqrSendGroupMsgSendUserTypeChoices.ALL: + jqr_new_user_send_group_msg = send_msg + break + elif send_msg.sendusertype == JqrSendGroupMsgSendUserTypeChoices.CORP_PART: + if send_msg.senduserids and any([senduserid.get('corpid') for senduserid in send_msg.senduserids]): + jqr_new_user_send_group_msg = send_msg + break + elif send_msg.sendusertype == JqrSendGroupMsgSendUserTypeChoices.CORP_USER: + if send_msg.senduserids and any( + [senduserid.get('corpid') and senduserid.get('userid') for senduserid in send_msg.senduserids]): + jqr_new_user_send_group_msg = send_msg + break + send_msg_list = jqr_new_user_send_group_msg.sendcontent + if not send_msg_list: + logger.error(f'corpid: {corpid}, userid: {userid}, ,新客欢迎配置内容不存在') + return + send_msg_list.sort(key=lambda msg: msg.get('sendcitylevels', {}).get('level')) + send_content = None + for send_msg in send_msg_list: + # 所有用户 + send_msg_tag_type = send_msg.get('sendtag', {}).get('type') + if send_msg_tag_type == JqrSendGroupMsgSendTagTypeChoices.ALL_USER: + send_content = send_msg + break + # 满足任意标签的用户 + elif send_msg_tag_type == JqrSendGroupMsgSendTagTypeChoices.CORP_TAGS: + # 查询用户的标签信息 + try: + external_follow_user = JqrExternalFollowUser.objects.get(corpid=corpid, userid=hook_user_userid, + dtime__isnull=True) + except JqrExternalFollowUser.DoesNotExist: + logger.error(f'corpid: {corpid}, userid: {userid}, 新客欢迎external_follow_user不存在') + continue + sendtag_item = send_msg.get('sendtag', {}).get('item') + tags = list(filter(lambda tag: tag.get('corpid') == corpid, sendtag_item)) + if not tags: + logger.error(f'corpid: {corpid}, userid: {hook_user_userid}, ,未找到标签') + continue + tag = tags[0] + tagids = [t.get('id') for t in tag.get('tags')] + if not tagids: + pass