import logging from apps.jqr.choices import JqrSendGroupMsgIsOpenChoices, JqrSendGroupMsgSendUserTypeChoices, \ JqrSendGroupMsgSendTagTypeChoices from apps.jqr.ksy_http import Http from apps.jqr.models import JqrExternalUser, JqrHookUser, JqrNewUserSendGroupMsg, JqrExternalFollowUser from apps.jqr.ws import WS 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 def send_new_user_msg(corpid, userid, external_userid): # 发送新客欢迎 try: success, data = Http.get_new_user_msg(corpid, userid, external_userid) if not success: logger.error(f'corpid: {corpid}, userid: {userid}, external_userid: {external_userid}, 发送新客欢迎失败') return status_code = WS.send_wx_work_msg(data) return status_code == 200 except Exception as e: logger.error(f'corpid: {corpid}, userid: {userid}, external_userid: {external_userid}, 发送新客欢迎失败: {e}') pass