feat:int
This commit is contained in:
@@ -24,7 +24,7 @@ SECRET_KEY = 'django-insecure-i(fm5c2v*=vgfwmgdl^qi7iezv(xfwovbqu=+^=vm72e$gnx&l
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
ALLOWED_HOSTS = ["192.168.237.130",'127.0.0.1']
|
||||
ALLOWED_HOSTS = ["10.212.26.178",'127.0.0.1']
|
||||
|
||||
# Application definition
|
||||
|
||||
@@ -115,3 +115,19 @@ STATIC_URL = 'static/'
|
||||
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
DEFAULT_AUTH_URL = 'https://oa-dev.yced.com.cn/iuap-api-auth'
|
||||
DEFAULT_GATEWAY_URL = 'https://oa-dev.yced.com.cn/iuap-api-gateway '
|
||||
TEMP_TENANT_ID = 'pr3rl2oj'
|
||||
APPKEY = 'e5d615eb169944abb3a1db5bd699ca65'
|
||||
APPSECRET = '84bb250c995c6161a97aebc2296abe558f6551ac'
|
||||
DEFAULT_HEADER = {'Content-Type': 'application/json'}
|
||||
|
||||
# General Purpose Interface
|
||||
TOKEN_INTF = '/open-auth/selfAppAuth/getAccessToken'
|
||||
GATEWAY_INTF = '/open-auth/dataCenter/getGatewayAddress'
|
||||
# Service Interface
|
||||
QUERY_MEETING_ROOM_TYPE = ['GET', '/yonbip/uspace/external/access/getMeetingRoomType']
|
||||
QUERY_MEETING_ROOM = ['GET', '/yonbip/uspace/external/access/getMeetingRoom']
|
||||
QUERY_MEETINGBOOKING_INFO = ['GET', '/yonbip/uspace/external/access/getDestineInformation']
|
||||
BOOK_MEETING_ROOM = ['GET', '/yonbip/uspace/destine/Meeting']
|
||||
|
||||
|
||||
146
yj_room_agent/tools/getinfo.py
Normal file
146
yj_room_agent/tools/getinfo.py
Normal file
@@ -0,0 +1,146 @@
|
||||
import time
|
||||
from yonbip_open_api_sdk import sign_opt, request_opt
|
||||
from yj_room_agent import settings
|
||||
import requests
|
||||
import urllib
|
||||
|
||||
|
||||
def check_required_params(required_fields, params):
|
||||
"""
|
||||
检查提供的数据字典是否包含所有必需的字段,并且这些字段的值非空。
|
||||
:param required_fields: 必须包含的键列表
|
||||
:param data: 待检查的数据字典
|
||||
:return: 如果所有必需字段都存在并且值非空,则返回 True;否则返回 False 和缺失或为空的字段列表。
|
||||
"""
|
||||
if not isinstance(params, dict):
|
||||
raise TypeError(f"Expected a dictionary, but got {type(params).__name__}.")
|
||||
missing_or_empty_fields = []
|
||||
for field in required_fields:
|
||||
if field not in params or params[field] in (None, '', [], {}):
|
||||
missing_or_empty_fields.append(field)
|
||||
|
||||
if missing_or_empty_fields:
|
||||
return False, missing_or_empty_fields
|
||||
else:
|
||||
return True, None
|
||||
def get_access_token(tenant_id):
|
||||
'''
|
||||
:param params: keys=>[tenantId, appKey]
|
||||
:param app_secret:
|
||||
:return:
|
||||
'''
|
||||
if not tenant_id:
|
||||
raise
|
||||
params = {}
|
||||
params['timestamp'] = str(int(time.time() * 1000))
|
||||
params['appKey'] = settings.APPKEY
|
||||
app_secret = settings.APPSECRET
|
||||
sort_param = sign_opt.opt_sort_data(params)
|
||||
print("sort_param", sort_param)
|
||||
signature = sign_opt.opt_sha256(app_secret, sort_param)
|
||||
print("signature is ", signature)
|
||||
params["signature"] = signature
|
||||
try:
|
||||
gateway_url, token_url = get_domain({'tenantId': tenant_id})
|
||||
request_url = token_url + settings.TOKEN_INTF
|
||||
print("no error")
|
||||
except Exception as ex:
|
||||
# request_url = settings.DEFAULT_AUTH_URL + settings.TOKEN_INTF
|
||||
raise Exception("该租户无法获取中心域名=>detail error: " + f"{str(ex)}")
|
||||
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
respones = requests.get(url=request_url, params=params, headers=headers)
|
||||
result = respones.json()
|
||||
print("status_code:{0}".format(respones.status_code))
|
||||
if respones.status_code == 200:
|
||||
access_token = result.get("data", {}).get("access_token")
|
||||
print("access_token is {0}".format(result, access_token))
|
||||
return access_token
|
||||
else:
|
||||
raise Exception(f"请求失败 状态码: {respones.status_code}")
|
||||
|
||||
|
||||
# 获取租户所在中心域名
|
||||
def get_domain(params):
|
||||
request_url = settings.DEFAULT_AUTH_URL + settings.GATEWAY_INTF
|
||||
print("request_url is {0}".format(request_url))
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
respones = requests.get(url=request_url,
|
||||
params=params,
|
||||
headers=headers)
|
||||
result = respones.json()
|
||||
|
||||
if respones.status_code == 200:
|
||||
data = result.get("data", {})
|
||||
gateway_url = data.get("gatewayUrl", None)
|
||||
token_url = data.get("tokenUrl", None)
|
||||
print("gateway_url is {0} token_url is {1}"
|
||||
"".format(gateway_url, token_url))
|
||||
return gateway_url, token_url
|
||||
else:
|
||||
raise Exception(f"请求失败 状态码: {respones.status_code}")
|
||||
|
||||
|
||||
def query_meetingroom_type(params):
|
||||
print("now params ", params)
|
||||
tenant_id = params.get("ytenantId", None)
|
||||
print("tenant_id : ", tenant_id)
|
||||
gateway_url, token_url = get_domain({"tenantId": tenant_id})
|
||||
request_url = gateway_url + settings.QUERY_MEETING_ROOM_TYPE[1]
|
||||
respones = requests.get(url=request_url, params=params,
|
||||
headers=settings.DEFAULT_HEADER)
|
||||
result = respones.json()
|
||||
if respones.status_code == 200:
|
||||
return result
|
||||
else:
|
||||
raise Exception(f"请求查询会议室类型失败 状态码: {respones.status_code}")
|
||||
|
||||
|
||||
def query_meetingroom(params):
|
||||
print("now params ", params)
|
||||
tenant_id = params.get("ytenantId", None)
|
||||
print("tenant_id : ", tenant_id)
|
||||
gateway_url, token_url = get_domain({"tenantId": tenant_id})
|
||||
request_url = gateway_url + settings.QUERY_MEETING_ROOM[1]
|
||||
print("request url ", request_url)
|
||||
print("paramas ", params)
|
||||
respones = requests.get(url=request_url, params=params,
|
||||
headers=settings.DEFAULT_HEADER)
|
||||
result = respones.json()
|
||||
if respones.status_code == 200:
|
||||
return result
|
||||
else:
|
||||
raise Exception(f"请求查询会议室失败 状态码: {respones.status_code}")
|
||||
|
||||
|
||||
def query_meetingbooking_info(params):
|
||||
print("now params ", params)
|
||||
tenant_id = params.get("ytenantId", None)
|
||||
print("tenant_id : ", tenant_id)
|
||||
gateway_url, token_url = get_domain({"tenantId": tenant_id})
|
||||
request_url = gateway_url + settings.QUERY_MEETINGBOOKING_INFO[1]
|
||||
print("request url ", request_url)
|
||||
print("paramas ", params)
|
||||
respones = requests.get(url=request_url, params=params,
|
||||
headers=settings.DEFAULT_HEADER)
|
||||
result = respones.json()
|
||||
if respones.status_code == 200:
|
||||
return result
|
||||
else:
|
||||
raise Exception(f"请求查询会议预定信息失败 状态码: {respones.status_code}")
|
||||
|
||||
def book_meeting_room(params, data):
|
||||
print("now params ", params)
|
||||
tenant_id = params.get("ytenantId", None)
|
||||
print("tenant_id : ", tenant_id)
|
||||
gateway_url, token_url = get_domain({"tenantId": tenant_id})
|
||||
request_url = gateway_url + settings.BOOK_MEETING_ROOM[1]
|
||||
print("request url ", request_url)
|
||||
print("paramas ", params)
|
||||
respones = requests.post(url=request_url, params=params,
|
||||
headers=settings.DEFAULT_HEADER, data=data)
|
||||
result = respones.json()
|
||||
if respones.status_code == 200:
|
||||
return result
|
||||
else:
|
||||
raise Exception(f"预定会议室失败 状态码: {respones.status_code}")
|
||||
@@ -16,9 +16,13 @@ Including another URLconf
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
from yj_room_agent import views
|
||||
from yj_room_agent import views
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('test/', views.hello, name='hello'),
|
||||
path('getMeetingType/', views.query_meeting_type),
|
||||
path('getMeeting/', views.query_meeting),
|
||||
path('getMeetingBookingDetails/', views.query_meetingooking_info),
|
||||
path('bookMeetingRoom/', )
|
||||
]
|
||||
|
||||
@@ -1,5 +1,122 @@
|
||||
from django.http import StreamingHttpResponse, JsonResponse, FileResponse
|
||||
|
||||
import json
|
||||
|
||||
from django.http import StreamingHttpResponse, JsonResponse, FileResponse, HttpResponseNotAllowed
|
||||
import requests
|
||||
from .tools import getinfo
|
||||
from yj_room_agent import settings
|
||||
def hello(request):
|
||||
return JsonResponse({'msg': 'ok'})
|
||||
def query_meeting_type(request):
|
||||
"""
|
||||
query_params:
|
||||
ytenantId not null
|
||||
pageNum
|
||||
pageSize
|
||||
"""
|
||||
params = request.GET.dict()
|
||||
print("当前params : {0}".format(params))
|
||||
tenant_id = params.get('ytenantId', None)
|
||||
if not tenant_id:
|
||||
raise Exception("ytenantId 不能为空")
|
||||
try:
|
||||
access_token = getinfo.get_access_token(tenant_id)
|
||||
params['access_token'] = access_token
|
||||
|
||||
room_type = getinfo.query_meetingroom_type(params)
|
||||
content = json.loads(json.dumps(room_type))
|
||||
print("room type :",content)
|
||||
return JsonResponse(content)
|
||||
except Exception as ex:
|
||||
return JsonResponse(str(ex))
|
||||
|
||||
def query_meeting(request):
|
||||
"""
|
||||
query_params:
|
||||
ytenantId not null
|
||||
typeIds
|
||||
pageNum
|
||||
pageSize
|
||||
"""
|
||||
params = request.GET.dict()
|
||||
print("当前params : {0}".format(params))
|
||||
tenant_id = params.get('ytenantId', None)
|
||||
if not tenant_id:
|
||||
raise Exception("ytenantId 不能为空")
|
||||
try:
|
||||
access_token = getinfo.get_access_token(tenant_id)
|
||||
params['access_token'] = access_token
|
||||
|
||||
meeting_room = getinfo.query_meetingroom(params)
|
||||
content = json.loads(json.dumps(meeting_room))
|
||||
print("room type :",content)
|
||||
return JsonResponse(content)
|
||||
except Exception as ex:
|
||||
return JsonResponse(str(ex))
|
||||
|
||||
|
||||
def query_meetingooking_info(request):
|
||||
"""
|
||||
query_params:
|
||||
ytenantId (not null)
|
||||
startTimeStamp
|
||||
endTimeStamp
|
||||
meetingRoomIds
|
||||
meetingRoomTypeIds
|
||||
pageNum
|
||||
pageSize
|
||||
"""
|
||||
params = request.GET.dict()
|
||||
print("当前params : {0}".format(params))
|
||||
tenant_id = params.get('ytenantId', None)
|
||||
if not tenant_id:
|
||||
raise Exception("ytenantId 不能为空")
|
||||
try:
|
||||
access_token = getinfo.get_access_token(tenant_id)
|
||||
params['access_token'] = access_token
|
||||
|
||||
meeting_room = getinfo.query_meetingbooking_info(params)
|
||||
content = json.loads(json.dumps(meeting_room))
|
||||
print("room type :",content)
|
||||
return JsonResponse(content)
|
||||
except Exception as ex:
|
||||
return JsonResponse(str(ex))
|
||||
|
||||
def book_meeting_room(request):
|
||||
"""
|
||||
:data {
|
||||
startDateTime (not null)
|
||||
endDateTime (not null)
|
||||
qzId (not null)
|
||||
ownnerId (not null)
|
||||
subject (not null)
|
||||
meetingroomId (not null)
|
||||
content (not null)
|
||||
personAmount (not null)
|
||||
}
|
||||
:params: ytenantId (not null)
|
||||
:return:
|
||||
"""
|
||||
if request.method == 'POST':
|
||||
params = request.GET.dict()
|
||||
data = request.POST.dict()
|
||||
print("data is {0}".format(data))
|
||||
print("当前params : {0}".format(params))
|
||||
# tenant_id = params.get('ytenantId', None)
|
||||
# if not tenant_id:
|
||||
# raise Exception("ytenantId 不能为空")
|
||||
# try:
|
||||
# access_token = getinfo.get_access_token(tenant_id)
|
||||
# params['access_token'] = access_token
|
||||
#
|
||||
# book_meeting = getinfo.book_meeting_room(params,data)
|
||||
# content = json.loads(json.dumps(book_meeting))
|
||||
# print("room type :", content)
|
||||
# return JsonResponse(content)
|
||||
# except Exception as ex:
|
||||
# return JsonResponse(str(ex))
|
||||
#
|
||||
# else:
|
||||
# return HttpResponseNotAllowed(['POST'])
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user