161 lines
9.0 KiB
Python
161 lines
9.0 KiB
Python
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("获取授权成功!") |