|
|
# coding:utf-8
|
|
|
__author__ = "ila"
|
|
|
|
|
|
import logging, os, time
|
|
|
|
|
|
from django.http import JsonResponse
|
|
|
from django.apps import apps
|
|
|
from wsgiref.util import FileWrapper
|
|
|
from django.http import HttpResponse,HttpResponseRedirect
|
|
|
from django.shortcuts import redirect
|
|
|
|
|
|
from .config_model import config
|
|
|
from util.codes import *
|
|
|
from util import message as mes
|
|
|
from util.baidubce_api import BaiDuBce
|
|
|
from util.locate import geocoding
|
|
|
from dj2.settings import dbName as schemaName
|
|
|
|
|
|
def schemaName_cal(request, tableName, columnName):
|
|
|
'''
|
|
|
计算规则接口
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, 'data': []}
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
|
|
|
data = m.getcomputedbycolumn(
|
|
|
m,
|
|
|
m,
|
|
|
columnName
|
|
|
)
|
|
|
print(data)
|
|
|
if data:
|
|
|
try:
|
|
|
sum='%.05f' % float(data.get("sum"))
|
|
|
except:
|
|
|
sum=0.00
|
|
|
try:
|
|
|
max='%.05f' % float(data.get("max"))
|
|
|
except:
|
|
|
max=0.00
|
|
|
try:
|
|
|
min='%.05f' % float(data.get("min"))
|
|
|
except:
|
|
|
min=0.00
|
|
|
try:
|
|
|
avg='%.05f' % float(data.get("avg"))
|
|
|
except:
|
|
|
avg=0.00
|
|
|
msg['data'] = {
|
|
|
"sum": sum,
|
|
|
"max": max,
|
|
|
"min": min,
|
|
|
"avg": avg,
|
|
|
}
|
|
|
break
|
|
|
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_file_upload(request):
|
|
|
'''
|
|
|
上传
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, "msg": "成功", "data": {}}
|
|
|
|
|
|
file = request.FILES.get("file")
|
|
|
|
|
|
if file:
|
|
|
filename = file.name
|
|
|
filesuffix = filename.split(".")[-1]
|
|
|
file_name = "{}.{}".format(int(float(time.time()) * 1000), filesuffix)
|
|
|
filePath = os.path.join(os.getcwd(), "templates/front", file_name)
|
|
|
print("filePath===========>", filePath)
|
|
|
|
|
|
with open(filePath, 'wb+') as destination:
|
|
|
for chunk in file.chunks():
|
|
|
destination.write(chunk)
|
|
|
msg["file"] = file_name
|
|
|
# 判断是否需要保存为人脸识别基础照片
|
|
|
req_dict = request.session.get("req_dict")
|
|
|
type1 = req_dict.get("type", 0)
|
|
|
print("type1=======>",type1)
|
|
|
type1 = int(type1)
|
|
|
if type1 == 1:
|
|
|
params = {"name":"faceFile","value": file_name}
|
|
|
config.createbyreq(config, config, params)
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_file_download(request):
|
|
|
'''
|
|
|
下载
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
req_dict = request.session.get("req_dict")
|
|
|
filename = req_dict.get("fileName")
|
|
|
|
|
|
filePath = os.path.join(os.getcwd(), "templates/front", filename)
|
|
|
print("filePath===========>", filePath)
|
|
|
|
|
|
file = open(filePath, 'rb')
|
|
|
response = HttpResponse(file)
|
|
|
|
|
|
response['Content-Type'] = 'text/plain'
|
|
|
response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(filePath)
|
|
|
response['Content-Length'] = os.path.getsize(filePath)
|
|
|
return response
|
|
|
|
|
|
|
|
|
def schemaName_follow_level(request, tableName, columnName, level, parent):
|
|
|
'''
|
|
|
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, 'data': []}
|
|
|
# 组合查询参数
|
|
|
params = {
|
|
|
"level": level,
|
|
|
"parent": parent
|
|
|
}
|
|
|
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
data = m.getbyparams(
|
|
|
m,
|
|
|
m,
|
|
|
params
|
|
|
)
|
|
|
# 只需要此列的数据
|
|
|
for i in data:
|
|
|
msg['data'].append(i.get(columnName))
|
|
|
break
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_follow(request, tableName, columnName):
|
|
|
'''
|
|
|
根据option字段值获取某表的单行记录接口
|
|
|
组合columnName和columnValue成dict,传入查询方法
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, 'data': []}
|
|
|
# 组合查询参数
|
|
|
params = request.session.get('req_dict')
|
|
|
columnValue = params.get("columnValue")
|
|
|
params = {columnName: columnValue}
|
|
|
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
data = m.getbyparams(
|
|
|
m,
|
|
|
m,
|
|
|
params
|
|
|
)
|
|
|
if len(data)>0:
|
|
|
msg['data'] = data[0]
|
|
|
break
|
|
|
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_location(request):
|
|
|
'''
|
|
|
定位
|
|
|
:return:
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, "msg": mes.normal_code, "address": ''}
|
|
|
req_dict = request.session.get('req_dict')
|
|
|
|
|
|
datas = config.getbyparams(config, config, {"name": "baidu_ditu_ak"})
|
|
|
if len(datas) > 0:
|
|
|
baidu_ditu_ak = datas[0].get("baidu_ditu_ak")
|
|
|
else:
|
|
|
baidu_ditu_ak = 'QvMZVORsL7sGzPyTf5ZhawntyjiWYCif'
|
|
|
lat = req_dict.get("lat", 24.2943350100)
|
|
|
lon = req_dict.get("lng", 116.1287866600)
|
|
|
msg['address'] = geocoding(baidu_ditu_ak, lat, lon)
|
|
|
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_matchface(request):
|
|
|
'''
|
|
|
baidubce百度人脸识别
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code}
|
|
|
req_dict = request.session.get("req_dict")
|
|
|
|
|
|
face1 = req_dict.get("face1")
|
|
|
file_path1 = os.path.join(os.getcwd(),"templates/front",face1)
|
|
|
|
|
|
face2 = req_dict.get("face1")
|
|
|
file_path2 = os.path.join(os.getcwd(), "templates/front", face2)
|
|
|
|
|
|
data = config.getbyparams(config, config, {"name": "APIKey"})
|
|
|
client_id = data[0].get("APIKey")
|
|
|
data = config.getbyparams(config, config, {"name": "SecretKey"})
|
|
|
client_secret = data[0].get("SecretKey")
|
|
|
|
|
|
bdb = BaiDuBce()
|
|
|
score = bdb.bd_check2pic(client_id, client_secret, file_path1, file_path2)
|
|
|
msg['score'] = score
|
|
|
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_option(request, tableName, columnName):
|
|
|
'''
|
|
|
获取某表的某个字段列表接口
|
|
|
:param request:
|
|
|
:param tableName:
|
|
|
:param columnName:
|
|
|
:return:
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, 'data': []}
|
|
|
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
data = m.getbyColumn(
|
|
|
m,
|
|
|
m,
|
|
|
columnName
|
|
|
)
|
|
|
|
|
|
msg['data'] = data
|
|
|
break
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_remind_tablename_columnname_type(request, tableName, columnName, type)->int:
|
|
|
'''
|
|
|
前台提醒接口(通用接口,不需要登陆)
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, 'data': []}
|
|
|
# 组合查询参数
|
|
|
params = request.session.get("req_dict")
|
|
|
remindstart = int(params.get('remindstart')) if params.get('remindstart') != None else None
|
|
|
remindend = int(params.get('remindend')) if params.get('remindend') != None else None
|
|
|
if int(type) == 1: # 数字
|
|
|
if remindstart == None and remindend != None:
|
|
|
params['remindstart'] = 0
|
|
|
elif remindstart != None and remindend == None:
|
|
|
params['remindend'] = 999999
|
|
|
elif remindstart == None and remindend == None:
|
|
|
params['remindstart'] = 0
|
|
|
params['remindend'] = 999999
|
|
|
elif int(type) == 2: # 日期
|
|
|
current_time = int(time.time())
|
|
|
if remindstart == None and remindend != None:
|
|
|
starttime = current_time - 60 * 60 * 24 * 365 * 2
|
|
|
params['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * remindend
|
|
|
params['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
|
|
|
elif remindstart != None and remindend == None:
|
|
|
starttime = current_time - 60 * 60 * 24 * remindstart
|
|
|
params['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * 365 * 2
|
|
|
params['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
elif remindstart == None and remindend == None:
|
|
|
starttime = current_time - 60 * 60 * 24 * 365 * 2
|
|
|
params['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * 365 * 2
|
|
|
params['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
data = m.getbetweenparams(
|
|
|
m,
|
|
|
m,
|
|
|
columnName,
|
|
|
params
|
|
|
)
|
|
|
|
|
|
msg['count'] = len(data)
|
|
|
break
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_tablename_remind_columnname_type(request, tableName, columnName, type):
|
|
|
'''
|
|
|
后台提醒接口,判断authSeparate和authTable的权限
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
print("schemaName_tablename_remind_columnname_type==============>")
|
|
|
msg = {"code": normal_code, 'data': []}
|
|
|
|
|
|
req_dict = request.session.get("req_dict")
|
|
|
remindstart = int(req_dict.get('remindstart')) if req_dict.get('remindstart')!=None else None
|
|
|
remindend = int(req_dict.get('remindend')) if req_dict.get('remindend')!=None else None
|
|
|
print("req_dict===================>",req_dict)
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
tableModel=m
|
|
|
break
|
|
|
# 获取全部列名
|
|
|
columns = tableModel.getallcolumn(tableModel, tableModel)
|
|
|
|
|
|
# 当前登录用户所在表
|
|
|
tablename = request.session.get("tablename")
|
|
|
# 当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的
|
|
|
try:
|
|
|
__authTables__ =tableModel.__authTables__
|
|
|
except:
|
|
|
__authTables__ = {}
|
|
|
|
|
|
if __authTables__ != {}:
|
|
|
|
|
|
for authColumn, authTable in __authTables__.items():
|
|
|
if authTable == tablename:
|
|
|
params = request.session.get("params")
|
|
|
req_dict[authColumn] = params.get(authColumn)
|
|
|
break
|
|
|
|
|
|
|
|
|
'''__authSeparate__此属性为真,params添加userid,后台只查询个人数据'''
|
|
|
try:
|
|
|
__authSeparate__ =tableModel.__authSeparate__
|
|
|
except:
|
|
|
__authSeparate__ = None
|
|
|
|
|
|
if __authSeparate__ == "是":
|
|
|
tablename = request.session.get("tablename")
|
|
|
if tablename != "users" and 'userid' in columns:
|
|
|
try:
|
|
|
req_dict['userid'] = request.session.get("params").get("id")
|
|
|
except:
|
|
|
pass
|
|
|
|
|
|
# 组合查询参数
|
|
|
if int(type) == 1: # 数字
|
|
|
if remindstart == None and remindend != None:
|
|
|
req_dict['remindstart'] = 0
|
|
|
elif remindstart != None and remindend == None:
|
|
|
req_dict['remindend'] = 999999
|
|
|
elif remindstart == None and remindend == None:
|
|
|
req_dict['remindstart'] = 0
|
|
|
req_dict['remindend'] = 999999
|
|
|
elif int(type) == 2: # 日期
|
|
|
current_time = int(time.time())
|
|
|
if remindstart == None and remindend != None:
|
|
|
starttime = current_time - 60 * 60 * 24 * 365 * 2
|
|
|
req_dict['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * remindend
|
|
|
req_dict['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
|
|
|
elif remindstart != None and remindend == None:
|
|
|
starttime = current_time - 60 * 60 * 24 * remindstart
|
|
|
req_dict['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * 365 * 2
|
|
|
req_dict['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
elif remindstart == None and remindend == None:
|
|
|
starttime = current_time - 60 * 60 * 24 * 365 * 2
|
|
|
req_dict['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * 365 * 2
|
|
|
req_dict['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
else:
|
|
|
starttime = current_time - 60 * 60 * 24 * remindstart
|
|
|
req_dict['remindstart'] = time.strftime("%Y-%m-%d", time.localtime(starttime))
|
|
|
endtime = current_time + 60 * 60 * 24 * remindend
|
|
|
req_dict['remindend'] = time.strftime("%Y-%m-%d", time.localtime(endtime))
|
|
|
print("req_dict==============>",req_dict)
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
data = m.getbetweenparams(
|
|
|
m,
|
|
|
m,
|
|
|
columnName,
|
|
|
req_dict
|
|
|
)
|
|
|
|
|
|
msg['count'] = len(data)
|
|
|
break
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
def schemaName_sh(request, tableName):
|
|
|
'''
|
|
|
根据主键id修改table表的sfsh状态接口
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
print('tableName=========>', tableName)
|
|
|
msg = {"code": normal_code, "msg": "成功", "data": {}}
|
|
|
req_dict = request.session.get("req_dict")
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
|
|
|
# 查询结果
|
|
|
data1 = m.getbyid(
|
|
|
m,
|
|
|
m,
|
|
|
req_dict.get('id')
|
|
|
)
|
|
|
if data1[0].get("sfsh") == '是':
|
|
|
req_dict['sfsh'] = '否'
|
|
|
else:
|
|
|
req_dict['sfsh'] = '否'
|
|
|
|
|
|
# 更新
|
|
|
res = m.updatebyparams(
|
|
|
m,
|
|
|
m,
|
|
|
req_dict
|
|
|
)
|
|
|
# logging.warning("schemaName_sh.res=====>{}".format(res))
|
|
|
if res!=None:
|
|
|
msg["code"]=crud_error_code
|
|
|
msg["code"]=mes.crud_error_code
|
|
|
break
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_upload(request, fileName):
|
|
|
'''
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
return HttpResponseRedirect ("/{}/front/{}".format(schemaName,fileName))
|
|
|
|
|
|
|
|
|
def schemaName_group_quyu(request, tableName, columnName):
|
|
|
'''
|
|
|
{
|
|
|
"code": 0,
|
|
|
"data": [
|
|
|
{
|
|
|
"total": 2,
|
|
|
"shangpinleibie": "水果"
|
|
|
},
|
|
|
{
|
|
|
"total": 1,
|
|
|
"shangpinleibie": "蔬菜"
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, "msg": "成功", "data": {}}
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
msg['data'] = m.groupbycolumnname(
|
|
|
m,
|
|
|
m,
|
|
|
columnName
|
|
|
)
|
|
|
break
|
|
|
|
|
|
return JsonResponse(msg)
|
|
|
|
|
|
|
|
|
def schemaName_value_quyu(request, tableName, xColumnName, yColumnName):
|
|
|
'''
|
|
|
按值统计接口,
|
|
|
{
|
|
|
"code": 0,
|
|
|
"data": [
|
|
|
{
|
|
|
"total": 10.0,
|
|
|
"shangpinleibie": "aa"
|
|
|
},
|
|
|
{
|
|
|
"total": 20.0,
|
|
|
"shangpinleibie": "bb"
|
|
|
},
|
|
|
{
|
|
|
"total": 15.0,
|
|
|
"shangpinleibie": "cc"
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
'''
|
|
|
if request.method in ["POST", "GET"]:
|
|
|
msg = {"code": normal_code, "msg": "成功", "data": {}}
|
|
|
allModels = apps.get_app_config('main').get_models()
|
|
|
for m in allModels:
|
|
|
if m.__tablename__ == tableName:
|
|
|
msg['data'] = m.getvaluebyxycolumnname(
|
|
|
m,
|
|
|
m,
|
|
|
xColumnName,
|
|
|
yColumnName
|
|
|
)
|
|
|
break
|
|
|
|
|
|
return JsonResponse(msg)
|