from rest_framework.views import APIView from apps.lyTiktokUnion.models import DYSystemAccount from utils.jsonResponse import SuccessResponse,ErrorResponse,DetailResponse from utils.common import get_parameter_dic,formatdatetime,float2dot,getminrandomodernum,ast_convert,getLyStateEncrypt,verifyLyStateEncript from django.db.models import Q,F,Sum,Count from django.db import transaction from rest_framework import serializers from rest_framework_simplejwt.authentication import JWTAuthentication from rest_framework.permissions import IsAuthenticated from utils.pagination import CustomPagination from utils.douyin.doudian_utils import doudian import time import datetime from django.http import HttpResponse,HttpResponseRedirect from utils.douyin.douyinUnion_utils import douyinUnion from config import DOUDIAN_TUANZHUANG_ZIYAN_APPKEY,DOUDIAN_TUANZHUANG_ZIYAN_APPSECRET,DOUDIAN_DKLIVE_ZIYAN_APPKEY,DOUDIAN_DKLIVE_ZIYAN_APPSECRET,DOUDIAN_DKFX_TOOL_APPKEY,DOUDIAN_DKFX_TOOL_APPSECRET import logging logger = logging.getLogger(__name__) #联盟抖店应用自研型/工具型授权回调(使用地址) class DoudianUnionCodeCallbackView(APIView): ''' #联盟抖店应用自研型授权回调(使用地址)-自研型登录右上角设置-授权管理-点击应用授权后点击【使用】即开始授权code回调 get: ''' authentication_classes = [] permission_classes = [] def get(self, request): reqdata = get_parameter_dic(request) code = reqdata.get('code',None) state = reqdata.get('state',None)#无state回调 if not all([code]): # return HttpResponse("非法请求") return HttpResponseRedirect("/#/login") logger.info("抖店联盟团长自研获取code回调信息code=%s|state=%s"%(code,state)) newdoudian_tz_yz = doudian(app_key=DOUDIAN_TUANZHUANG_ZIYAN_APPKEY,app_secret=DOUDIAN_TUANZHUANG_ZIYAN_APPSECRET,app_type="tool",code=code) res = newdoudian_tz_yz.init_token(code=code) if not res: return HttpResponse("获取授权失败!!!") name = "" buyinid = "" buyininfo = newdoudian_tz_yz.getBuyinInstitutionInfo() access_token_expire_in = int(newdoudian_tz_yz.get_cache_access_token_ttl()) refresh_access_expire_in = int(newdoudian_tz_yz.get_cache_refresh_access_token_ttl()) if buyininfo and buyininfo.get("code") == 10000: name = buyininfo.get("data").get("colonel").get("name") buyinid = buyininfo.get("data").get("colonel").get("buyin_id") newdoudian_tz_yz.set_cache_buyin_id(buyin_id=buyinid, expires=access_token_expire_in) else: buyinid = newdoudian_tz_yz.get_cache_buyin_id() new_access_token = newdoudian_tz_yz.get_access_token() new_refresh_token = newdoudian_tz_yz.get_cache_refresh_token() nowtimestap = int(time.time()) access_token_expire = datetime.datetime.fromtimestamp(nowtimestap + access_token_expire_in) refresh_token_expire = datetime.datetime.fromtimestamp(nowtimestap + refresh_access_expire_in) defaults = {'access_token': new_access_token, 'refresh_token': new_refresh_token, 'identity': 2,'nickname': name, 'access_token_expire': access_token_expire,'refresh_token_expire': refresh_token_expire} instance, created = DYSystemAccount.objects.get_or_create(buyin_id=buyinid, defaults=defaults) if not created: instance.buyin_id = buyinid instance.nickname = name instance.access_token = new_access_token instance.refresh_token = new_refresh_token instance.access_token_expire = access_token_expire instance.refresh_token_expire = refresh_token_expire instance.is_delete = False instance.status = True instance.save() DYSystemAccount.objects.filter(identity=2).exclude(id=instance.id).update(is_delete=True, status=False) return HttpResponse("获取授权成功!") #联盟抖店应用自研型/工具型授权回调(使用地址)--直播间 联盟抖客分销[工具型] class DoudianUnionDKLiveCodeCallbackView(APIView): ''' 1、联盟抖店应用自研型授权回调(使用地址)-自研型登录右上角设置-授权管理-点击应用授权后点击【使用】即开始授权code回调(此种方式无state返回) 2、抖客/达人可以使用拼链接的形式此种方式有state返回 get: ''' authentication_classes = [] permission_classes = [] def get(self, request): reqdata = get_parameter_dic(request) code = reqdata.get('code',None) state = reqdata.get('state',None) if not all([code]): # return HttpResponse("非法请求") return HttpResponseRedirect("/#/login") logger.info("抖店联盟联盟抖客分销获取code回调信息code=%s|state=%s"%(code,state)) newdoudian_dkfx_gj = doudian(app_key=DOUDIAN_DKFX_TOOL_APPKEY,app_secret=DOUDIAN_DKFX_TOOL_APPSECRET,app_type="tool",code="test") res = newdoudian_dkfx_gj.init_token(code=code) if not res: return HttpResponse("获取授权失败!!!") name = "" buyinid = "" buyininfo = newdoudian_dkfx_gj.getBuyinInstitutionInfo() logger.info("抖客授权获取百应ID信息结果%s"%buyininfo) access_token_expire_in = int(newdoudian_dkfx_gj.get_cache_access_token_ttl()) refresh_access_expire_in = int(newdoudian_dkfx_gj.get_cache_refresh_access_token_ttl()) if buyininfo and buyininfo.get("code") == 10000: name = buyininfo.get("data").get("douke").get("name") buyinid = buyininfo.get("data").get("douke").get("buyin_id") newdoudian_dkfx_gj.set_cache_buyin_id(buyin_id=buyinid,expires=access_token_expire_in) else: buyinid = newdoudian_dkfx_gj.get_cache_buyin_id() new_access_token = newdoudian_dkfx_gj.get_access_token() new_refresh_token = newdoudian_dkfx_gj.get_cache_refresh_token() nowtimestap = int(time.time()) access_token_expire = datetime.datetime.fromtimestamp(nowtimestap + access_token_expire_in) refresh_token_expire = datetime.datetime.fromtimestamp(nowtimestap + refresh_access_expire_in) defaults = {'access_token': new_access_token,'refresh_token': new_refresh_token,'identity':1,'nickname':name,'access_token_expire':access_token_expire,'refresh_token_expire':refresh_token_expire} instance, created = DYSystemAccount.objects.get_or_create(buyin_id=buyinid,defaults=defaults) if not created: instance.buyin_id = buyinid instance.nickname = name instance.access_token = new_access_token instance.refresh_token = new_refresh_token instance.access_token_expire = access_token_expire instance.refresh_token_expire = refresh_token_expire instance.is_delete = False instance.status = True instance.save() DYSystemAccount.objects.filter(identity=1).exclude(id=instance.id).update(is_delete=True, status=False) return HttpResponse("获取授权成功!") #联盟抖店应用自研型/工具型授权回调(使用地址)--直播间 联盟抖客直播间分销 class DoudianUnionDKLiveCodeCallbackView2(APIView): ''' 1、联盟抖店应用自研型授权回调(使用地址)-自研型登录右上角设置-授权管理-点击应用授权后点击【使用】即开始授权code回调(此种方式无state返回) 2、抖客/达人可以使用拼链接的形式此种方式有state返回 get: ''' authentication_classes = [] permission_classes = [] def get(self, request): reqdata = get_parameter_dic(request) code = reqdata.get('code',None) state = reqdata.get('state',None)#无state回调 if not all([code]): # return HttpResponse("非法请求") return HttpResponseRedirect("/#/login") logger.info("抖店联盟抖客直播间分销获取code回调信息code=%s|state=%s"%(code,state)) newdoudian_dklive_yz = doudian(app_key=DOUDIAN_DKLIVE_ZIYAN_APPKEY,app_secret=DOUDIAN_DKLIVE_ZIYAN_APPSECRET,app_type="tool",code=code) res = newdoudian_dklive_yz.init_token(code=code) if not res: return HttpResponse("获取授权失败!!!") if state: name = newdoudian_dklive_yz.get_cache_buyin_id() buyinid = newdoudian_dklive_yz.get_cache_buyin_id() defaults = {'access_token': newdoudian_dklive_yz.get_access_token(),'refresh_token': newdoudian_dklive_yz.get_cache_refresh_token()} instance, created = DYSystemAccount.objects.get_or_create(nickname=name, buyin_id=buyinid,defaults=defaults) if not created: instance.is_delete = False instance.status = True instance.save() DYSystemAccount.objects.all().exclude(id=instance.id).update(is_delete=True, status=False) return HttpResponse("获取授权成功!")