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)
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)