Exemple #1
0
    def mark_tag(self, request, pk=None):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        instance = self.get_object()

        try:
            myapp = CorpApp.objects.get(corp=instance.member.corp,
                                        agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            result['message'] = '应用获取失败'
            return Response(result)

        tags = request.data.get('tags', [])
        isadd = request.data.get('isadd', '0')

        wechat = WorkWechat(myapp)
        if isadd == '0':
            status, res = wechat.mark_tag(instance.member.userid,
                                          instance.customer.external_userid,
                                          remove_tag=tags)
        else:
            status, res = wechat.mark_tag(instance.member.userid,
                                          instance.customer.external_userid,
                                          add_tag=tags)

        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        status, res = wechat.get_customer_detail(
            instance.customer.external_userid)
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        follow_user_li = res.get('follow_user')
        for f in follow_user_li:
            if f.get('userid') == instance.member.userid:
                instance.tags = json.dumps(f.get('tags'))
                instance.save()
                result['result'] = 'OK'
                return Response(result)
Exemple #2
0
    def sync(self, request):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        corpid = request.data.get('corpid')
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            myLogger.error('公司[{0}]不存在'.format(corpid))
            result['message'] = '公司[{0}]不存在'.format(corpid)
            return Response(result)

        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            myLogger.error('应用获取失败')
            result['message'] = '应用获取失败'
            return Response(result)

        wechat = WorkWechat(myapp)
        status, res = wechat.get_follow_user_list()
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        follow_user = res.get('follow_user')
        customer_li = []
        for user in follow_user:
            status, res = wechat.get_customer_list(user)
            if status:
                customer_li.extend(res.get('external_userid'))
            else:
                myLogger.error(
                    'Failed to get the customer list for user: {0}'.format(
                        user))

        for c in list(set(customer_li)):
            status, res = wechat.get_customer_detail(c)
            myLogger.debug(res)
            a_customer, created = Customer.objects.get_or_create(
                corp=corp, external_userid=c)
            customer_info = res.get('external_contact')
            a_customer.name = customer_info.get('name')
            a_customer.type = customer_info.get('type', 1)
            a_customer.avatar = customer_info.get('avatar')
            a_customer.gender = customer_info.get('gender')
            a_customer.save()

            # Setup the bounding
            follow_user_li = res.get('follow_user')
            for f in follow_user_li:
                myLogger.debug('remark info:{0}'.format(f))
                try:
                    a_member = Member.objects.get(corp=corp,
                                                  userid=f.get('userid'))
                    cfurel, created = CustomerFollowUserRelationship.objects.get_or_create(
                        member=a_member, customer=a_customer)
                    cfurel.remark = f.get('remark')
                    cfurel.description = f.get('description')
                    cfurel.createtime = f.get('createtime')
                    cfurel.remark_corp_name = f.get('remark_corp_name', '')
                    cfurel.add_way = f.get('add_way', 0)
                    cfurel.remark_mobiles = json.dumps(
                        f.get('remark_mobiles')).encode('utf-8').decode(
                            'unicode_escape')
                    cfurel.tags = json.dumps(
                        f.get('tags')).encode('utf-8').decode('unicode_escape')
                    cfurel.save()
                except Member.DoesNotExist:
                    myLogger.error('成员{0}不存在'.format(f.get('userid')))

        result['result'] = 'OK'
        return Response(result)