diff --git a/apps/jqr/views.py b/apps/jqr/views.py index ae0b96a..fb415d8 100644 --- a/apps/jqr/views.py +++ b/apps/jqr/views.py @@ -1,7 +1,9 @@ from datetime import datetime +from django.db.models import Value, When, Case from rest_framework import viewsets from rest_framework.decorators import action +from rest_framework.exceptions import APIException from rest_framework.response import Response from apps.jqr.models import JqrHookUser, JqrExternalQun, JqrSendnewusermsgrecord, JqrSendmsgrecordinfo, JqrExternalUser, \ @@ -12,6 +14,7 @@ from apps.jqr.serializers import WechatPublicTokenSerializer, WechatEncryptSeria TbMessageModelSerializer from apps.qc.models import QcCorpinfo from utils.base_viewsets import BaseViewSet +from utils.exceptions import CustomProjectException from utils.response import ApiResponse @@ -92,8 +95,10 @@ class HookClientController(BaseViewSet): @action(methods=['get'], detail=False, url_path='usersend/getnonvid') def novide(self, request, *args, **kwargs): - corpid = request.query_params.get('corpid') - userid = request.query_params.get('userid') + corpid = request.query_params.get('corpid', None) + userid = request.query_params.get('userid', None) + if not corpid or not userid: + raise CustomProjectException('请选择企业和接粉号 ') external_userids = JqrExternalFollowUser.objects.filter(corpid=corpid, userid=userid).values_list( 'external_userid', flat=True) external_users = JqrExternalUser.objects.filter(vid__isnull=True, corpid=corpid, @@ -109,13 +114,18 @@ class HookClientController(BaseViewSet): @action(methods=['post'], detail=False, url_path='usersend/setvid') def setvid(self, request, *args, **kwargs): + data = request.data + corpid = request.query_params.get('corpid', None) + userid = request.query_params.get('userid', None) + if not corpid or not userid: + raise CustomProjectException('请选择企业和接粉号 ') external_users = data.get('external_users', []) - external_users = [JqrExternalUser(**external_user, utime=datetime.now()) for external_user in external_users] + for external_user in external_users: + JqrExternalUser.objects.filter(corpid=corpid, external_userid=external_user).update(vid=external_user.get('vid'), utime=datetime.now()) quns = data.get('quns', []) - quns = [JqrExternalQun(**qun, utime=datetime.now()) for qun in quns] - JqrExternalUser.objects.bulk_update(external_users, fields=['vid', 'utime']) - JqrExternalQun.objects.bulk_update(quns, fields=['vid', 'utime']) + for qun in quns: + JqrExternalQun.objects.filter(corpid=corpid, chat_id=qun.get('chat_id')).update(vid=qun.get('vid'), utime=datetime.now()) return ApiResponse() @action(methods=['post'], detail=False, url_path='usersend/updatestatus')