EquipmentManager.py 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227
  1. import re
  2. import time
  3. import traceback
  4. import threading
  5. import logging
  6. import requests
  7. import simplejson as json
  8. from django.utils import timezone
  9. from Model.models import Device_User, Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, \
  10. UIDCompanySerialModel, iotdeviceInfoModel, UIDMainUser
  11. from django.db.models import Q
  12. from Object.ResponseObject import ResponseObject
  13. from Object.TokenObject import TokenObject
  14. from Service.CommonService import CommonService
  15. from Service.ModelService import ModelService
  16. from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, BASE_DIR
  17. from Object.ETkObject import ETkObject
  18. import oss2
  19. from django.http import JsonResponse
  20. from Object.RedisObject import RedisObject
  21. from Controller.DetectController import DetectControllerView
  22. # 查询用户设备
  23. def queryUserEquipmentInterface(request):
  24. request.encoding = 'utf-8'
  25. response = ResponseObject()
  26. if request.method == 'POST':
  27. request_dict = request.POST
  28. elif request.method == 'GET':
  29. request_dict = request.GET
  30. else:
  31. return response.json(444)
  32. token = request_dict.get('token', None)
  33. tko = TokenObject(token)
  34. response.lang = tko.lang
  35. if tko.code != 0:
  36. return response.json(tko.code)
  37. userID = tko.userID
  38. if not userID:
  39. return response.json(309)
  40. dvqs = Device_Info.objects.filter(userID_id=userID)
  41. dvdict = CommonService.qs_to_dict(dvqs)
  42. uid_list = Device_Info.objects.filter(userID_id=userID, isShare=False). \
  43. values_list('UID', flat=True)
  44. ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
  45. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  46. res = []
  47. nowTime = int(time.time())
  48. for p in dvdict['datas']:
  49. p['fields']['vod'] = []
  50. for dm in ubqs:
  51. if p['fields']['UID'] == dm['uid']:
  52. if dm['endTime'] > nowTime:
  53. p['fields']['vod'].append(dm)
  54. # dm['valid'] = 1
  55. # else:
  56. # dm['valid'] = 0
  57. # p['fields']['primaryUserID'] = ''
  58. res.append(p)
  59. return response.json(0, {'datas': res})
  60. def addNewUserEquipmentInterface(request):
  61. request.encoding = 'utf-8'
  62. response = ResponseObject()
  63. if request.method == 'POST':
  64. request_dict = request.POST
  65. elif request.method == 'GET':
  66. request_dict = request.GET
  67. else:
  68. return response.json(444)
  69. token = request_dict.get('token', None)
  70. deviceContent = request_dict.get('content', None)
  71. if not deviceContent:
  72. return response.json(444, 'content')
  73. tko = TokenObject(token)
  74. response.lang = tko.lang
  75. if tko.code != 0:
  76. return response.json(tko.code)
  77. userID = tko.userID
  78. try:
  79. deviceData = json.loads(deviceContent)
  80. UID = deviceData.get('UID', None)
  81. if not UID:
  82. return response.json(444, 'content')
  83. dValid = Device_Info.objects.filter(userID_id=userID, UID=UID)
  84. if dValid:
  85. return response.json(174)
  86. else:
  87. # redisObj = RedisObject(db=8)
  88. # redisObj.del_data(key='uid_qs_' + userID)
  89. UID = deviceData.get('UID', '')
  90. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  91. if re_uid.match(UID):
  92. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  93. **deviceData)
  94. userDevice.save()
  95. if UID == '98UXAA8BRPA35VAL111A':
  96. asy = threading.Thread(target=ModelService.add_log,
  97. args=(CommonService.get_ip_address(request), userID, 'addV0'))
  98. asy.start()
  99. # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  100. # # 判断是否有已绑定用户
  101. # if not is_bind.exists():
  102. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  103. # **deviceData)
  104. # userDevice.save()
  105. # else:
  106. # # 分享添加
  107. # if 'isShare' in deviceData:
  108. # deviceData['isShare'] = True
  109. # else:
  110. # deviceData['isShare'] = True
  111. # bind_userID = is_bind[0].userID_id
  112. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
  113. # userID_id=userID,
  114. # primaryUserID=bind_userID,
  115. # primaryMaster=ModelService.get_user_name(bind_userID),
  116. # **deviceData)
  117. # userDevice.save()
  118. else:
  119. return response.json(444, 'UID')
  120. except Exception as e:
  121. errorInfo = traceback.format_exc()
  122. print('添加设备错误: %s ' % errorInfo)
  123. return response.json(178, repr(e))
  124. else:
  125. sqlDict = CommonService.qs_to_dict([userDevice])
  126. return response.json(0, sqlDict)
  127. def delUserEquipmentInterface(request):
  128. '''
  129. 删除用户设备
  130. :param request:
  131. :return:
  132. '''
  133. response = ResponseObject()
  134. request.encoding = 'utf-8'
  135. if request.method == 'POST':
  136. request_dict = request.POST
  137. elif request.method == 'GET':
  138. request_dict = request.GET
  139. else:
  140. return response.json(444)
  141. token = request_dict.get('token', None)
  142. id = request_dict.get('id', None)
  143. if not id:
  144. return response.json(444, 'id')
  145. tko = TokenObject(token)
  146. response.lang = tko.lang
  147. if tko.code != 0:
  148. return response.json(tko.code)
  149. userID = tko.userID
  150. # 主用户删除设备全部删除
  151. try:
  152. dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  153. # redisObj = RedisObject(db=8)
  154. # redisObj.del_data(key='uid_qs_' + userID)
  155. if dv_qs.exists():
  156. uid = dv_qs[0].UID
  157. asy = threading.Thread(target=ModelService.add_log, args=(CommonService.get_ip_address(request), userID, 'deleteV1'))
  158. asy.start()
  159. print('删除')
  160. UID_Preview.objects.filter(uid=uid).delete()
  161. dv_qs.delete()
  162. Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
  163. asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
  164. asy.start()
  165. except Exception as e:
  166. errorInfo = traceback.format_exc()
  167. print('删除数据库记录错误: %s' % errorInfo)
  168. return response.json(176, repr(e))
  169. else:
  170. return response.json(0)
  171. def modifyUserEquipmentInterface(request):
  172. '''
  173. 修改用户设备
  174. :param request:
  175. :return:
  176. '''
  177. response = ResponseObject()
  178. if request.method == 'POST':
  179. request.encoding = 'utf-8'
  180. request_dict = request.POST
  181. elif request.method == 'GET':
  182. request.encoding = 'utf-8'
  183. request_dict = request.GET
  184. else:
  185. return response.json(444)
  186. token = request_dict.get('token', None)
  187. deviceContent = request_dict.get('content', None)
  188. id = request_dict.get('id', None)
  189. if not deviceContent or not id:
  190. return response.json(444, 'content,id')
  191. tko = TokenObject(token)
  192. response.lang = tko.lang
  193. if tko.code != 0:
  194. return response.json(tko.code)
  195. userID = tko.userID
  196. if userID is None:
  197. return response.json(309)
  198. try:
  199. deviceData = json.loads(deviceContent)
  200. if deviceData.__contains__('userID_id'):
  201. asy = threading.Thread(target=ModelService.update_log,
  202. args=(CommonService.get_ip_address(request), userID, 'modifyV0', deviceData, id))
  203. asy.start()
  204. return response.json(10, '110')
  205. if deviceData.__contains__('UID'):
  206. del deviceData['UID']
  207. dev_info_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  208. dev_info_qs.update(**deviceData)
  209. except Exception as e:
  210. return response.json(177, repr(e))
  211. else:
  212. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  213. res = CommonService.qs_to_dict(qs)
  214. if qs.exists():
  215. uid = qs[0].UID
  216. if uid == '98UXAA8BRPA35VAL111A':
  217. asy = threading.Thread(target=ModelService.update_log,
  218. args=(CommonService.get_ip_address(request), userID, 'modifyV0', deviceContent, id))
  219. asy.start()
  220. nickname = qs[0].NickName
  221. # 增加设备影子信息修改昵称 start
  222. us_qs = UidSetModel.objects.filter(uid=uid)
  223. if us_qs.exists():
  224. us_qs.update(nickname=nickname)
  225. else:
  226. ChannelIndex = qs[0].ChannelIndex
  227. nowTime = int(time.time())
  228. uid_set_create_dict = {
  229. 'uid': uid,
  230. 'addTime': nowTime,
  231. 'updTime': nowTime,
  232. 'ip': CommonService.get_ip_address(request),
  233. 'channel': ChannelIndex,
  234. 'nickname': nickname,
  235. }
  236. UidSetModel.objects.create(**uid_set_create_dict)
  237. Device_Info.objects.filter(UID=uid).update(NickName=nickname)
  238. # redisObj = RedisObject(db=8)
  239. # redisObj.del_data(key='uid_qs_' + userID)
  240. return response.json(0, res)
  241. def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
  242. request.encoding = 'utf-8'
  243. response = ResponseObject()
  244. if request.method == 'POST':
  245. fieldDict = request.POST
  246. elif request.method == 'GET':
  247. fieldDict = request.GET
  248. else:
  249. return response.json(444)
  250. token = request.POST.get('token', None)
  251. type = request.POST.get('type', None)
  252. tko = TokenObject(token)
  253. response.lang = tko.lang
  254. if tko.code != 0:
  255. return response.json(tko.code)
  256. userID = tko.userID
  257. if not userID:
  258. return response.json(309)
  259. own_perm = ModelService.check_perm(userID=userID, permID=30)
  260. if not own_perm:
  261. return response.json(404)
  262. if type == 'PC':
  263. page = int(fieldDict['page'])
  264. line = int(fieldDict['line'])
  265. qs = Device_Info.objects.all()
  266. count = qs.count()
  267. res = qs[(page - 1) * line:page * line]
  268. sqlDict = CommonService.qs_to_dict(query_set=res)
  269. sqlDict['count'] = count
  270. return response.json(0, sqlDict)
  271. else:
  272. qs = Device_Info.objects.all()
  273. res = CommonService.qs_to_dict(qs)
  274. return response.json(0, res)
  275. def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
  276. request.encoding = 'utf-8'
  277. response = ResponseObject()
  278. if request.method == 'GET':
  279. fieldDict = request.GET
  280. elif request.method == 'POST':
  281. fieldDict = request.POST
  282. else:
  283. return response.json(444)
  284. deviceContent = fieldDict.get('content', None)
  285. token = fieldDict.get('token', None)
  286. tko = TokenObject(token)
  287. response.lang = tko.lang
  288. if tko.code != 0:
  289. return response.json(tko.code)
  290. if deviceContent:
  291. try:
  292. searchCondition = json.loads(deviceContent)
  293. except Exception as e:
  294. print(repr(e))
  295. return response.json(10, repr(e))
  296. else:
  297. kwargs = CommonService.get_kwargs(data=searchCondition)
  298. qs = Device_Info.objects.filter(**kwargs)
  299. page = int(fieldDict['page'])
  300. line = int(fieldDict['line'])
  301. count = qs.count()
  302. res = qs[(page - 1) * line:page * line]
  303. send_dict = CommonService.qs_to_dict(query_set=res)
  304. for k, v in enumerate(send_dict["datas"]):
  305. for val in res:
  306. if v['pk'] == val.id:
  307. send_dict["datas"][k]['fields']['username'] = \
  308. ModelService.get_user_mark(send_dict["datas"][k]['fields']['userID'])
  309. send_dict["datas"][k]['fields']['primaryusername'] = \
  310. ModelService.get_user_mark(send_dict["datas"][k]['fields']['primaryUserID'])
  311. send_dict['count'] = count
  312. return response.json(0, send_dict)
  313. else:
  314. qs = Device_Info.objects.all()
  315. page = int(fieldDict['page'])
  316. line = int(fieldDict['line'])
  317. count = qs.count()
  318. res = qs[(page - 1) * line:page * line]
  319. send_dict = CommonService.qs_to_dict(query_set=res)
  320. for k, v in enumerate(send_dict["datas"]):
  321. for val in res:
  322. if v['pk'] == val.id:
  323. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  324. send_dict["datas"][k]['fields']['username'] = username
  325. send_dict["datas"][k]['fields']['primaryusername'] = \
  326. ModelService.get_user_mark(send_dict["datas"][k]['fields']['primaryUserID'])
  327. send_dict['count'] = count
  328. return response.json(0, send_dict)
  329. # 添加设备字段
  330. def addInterface(request):
  331. request.encoding = 'utf-8'
  332. response = ResponseObject()
  333. if request.method == 'POST':
  334. request_dict = request.POST
  335. elif request.method == 'GET':
  336. request_dict = request.GET
  337. else:
  338. return response.json(444)
  339. token = request_dict.get('token', None)
  340. UID = request_dict.get('UID', None)
  341. NickName = request_dict.get('NickName', None)
  342. View_Account = request_dict.get('View_Account', None)
  343. View_Password = request_dict.get('View_Password', '')
  344. Type = request_dict.get('Type', None)
  345. ChannelIndex = request_dict.get('ChannelIndex', None)
  346. version = request_dict.get('version', '')
  347. isCheckMainUser = request_dict.get('isCheckMainUser', None)
  348. isMainUserExists = False
  349. if all([UID, NickName, View_Account, Type, ChannelIndex]):
  350. tko = TokenObject(token)
  351. response.lang = tko.lang
  352. if tko.code == 0:
  353. userID = tko.userID
  354. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  355. if re_uid.match(UID):
  356. is_exist = Device_Info.objects.filter(UID=UID, userID_id=userID)
  357. if is_exist:
  358. # 判断设备是否已存在
  359. if is_exist[0].isExist == 1:
  360. return response.json(174)
  361. else:
  362. is_exist.delete()
  363. if UID == '98UXAA8BRPA35VAL111A':
  364. asy = threading.Thread(target=ModelService.add_log,
  365. args=(CommonService.get_ip_address(request), userID, 'addV1'))
  366. asy.start()
  367. return response.json(10, 'illegal uid: {uid}'.format(uid=UID))
  368. pass
  369. pk = CommonService.getUserID(getUser=False)
  370. userName = Device_User.objects.get(userID=userID).username
  371. main_exist = Device_Info.objects.filter(UID=UID)
  372. main_exist = main_exist.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID', 'vodPrimaryMaster')
  373. vodPrimaryUserID = userID
  374. vodPrimaryMaster = userName
  375. if main_exist.exists():
  376. vodPrimaryUserID = main_exist[0]['vodPrimaryUserID']
  377. vodPrimaryMaster = main_exist[0]['vodPrimaryMaster']
  378. is_bind = Device_Info.objects.filter(UID=UID, isShare=False).values('userID__userID', 'vodPrimaryUserID')
  379. # 判断是否有已绑定用户
  380. isvodPrimaryUserID = ''
  381. for forbind in is_bind:
  382. if forbind['vodPrimaryUserID'] != '':
  383. isvodPrimaryUserID = forbind['vodPrimaryUserID']
  384. if isCheckMainUser != '1':
  385. if main_exist.exists():
  386. vodPrimaryUserID = main_exist[0]['vodPrimaryUserID']
  387. vodPrimaryMaster = main_exist[0]['vodPrimaryMaster']
  388. else:
  389. vodPrimaryUserID = ''
  390. vodPrimaryMaster = ''
  391. isusermain = False
  392. if is_bind and isvodPrimaryUserID != userID and isvodPrimaryUserID != '':
  393. isusermain = True
  394. # uid_main_exist = UIDMainUser.objects.filter(UID=UID).values('UID', 'user_id')
  395. # if uid_main_exist.exists():
  396. # vodPrimaryUserID = uid_main_exist[0]['user_id']
  397. # vodPrimaryMaster = Device_User.objects.get(userID=vodPrimaryUserID).username
  398. #
  399. # if vodPrimaryUserID != userID:
  400. # isusermain = True
  401. # 判断是否有已绑定用户
  402. if isCheckMainUser == '1' and isusermain:
  403. res = {
  404. 'id': pk,
  405. 'userID': userID,
  406. 'NickName': NickName,
  407. 'UID': UID,
  408. 'View_Account': View_Account,
  409. 'View_Password': View_Password,
  410. 'ChannelIndex': ChannelIndex,
  411. 'Type': Type,
  412. 'isShare': False,
  413. 'primaryUserID': '',
  414. 'primaryMaster': '',
  415. 'vodPrimaryUserID': vodPrimaryUserID,
  416. 'vodPrimaryMaster': vodPrimaryMaster,
  417. 'data_joined': '',
  418. 'version': version,
  419. 'isVod': 0,
  420. 'isExist': 1,
  421. 'userID__userEmail': ''
  422. }
  423. res['vod'] = [
  424. {
  425. "status": 1,
  426. "channel": ChannelIndex,
  427. "endTime": '',
  428. "bucket__content": '',
  429. "uid": UID
  430. }
  431. ]
  432. res['isMainUserExists'] = 1
  433. return response.json(0, res)
  434. try:
  435. # 判断是否有用户绑定
  436. nowTime = int(time.time())
  437. us_qs = UidSetModel.objects.filter(uid=UID)
  438. if not us_qs.exists():
  439. uid_set_create_dict = {
  440. 'uid': UID,
  441. 'addTime': nowTime,
  442. 'updTime': nowTime,
  443. 'ip': CommonService.get_ip_address(request),
  444. 'channel': ChannelIndex,
  445. 'nickname': NickName,
  446. 'version': version,
  447. }
  448. UidSetModel.objects.create(**uid_set_create_dict)
  449. else:
  450. us_qs.update(nickname=NickName)
  451. userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
  452. NickName=NickName, View_Account=View_Account,
  453. View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex,
  454. version=version, vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
  455. userDevice.save()
  456. uid_serial_qs = UIDCompanySerialModel.objects.filter(
  457. uid__uid=UID)
  458. if uid_serial_qs.exists():
  459. uid_serial = uid_serial_qs[0]
  460. Device_Info.objects.filter(UID=UID).update(vodPrimaryUserID=vodPrimaryUserID,
  461. vodPrimaryMaster=vodPrimaryMaster,
  462. serial_number=uid_serial.company_serial.serial_number + uid_serial.company_serial.company.mark)
  463. else:
  464. Device_Info.objects.filter(UID=UID).update(vodPrimaryUserID=vodPrimaryUserID,
  465. vodPrimaryMaster=vodPrimaryMaster)
  466. # if isCheckMainUser == '1':
  467. # uid_main_dict = {
  468. # 'UID': UID,
  469. # 'user_id': vodPrimaryUserID
  470. # }
  471. # UIDMainUser.objects.create(**uid_main_dict)
  472. # redisObj = RedisObject(db=8)
  473. # redisObj.del_data(key='uid_qs_' + userID)
  474. except Exception as e:
  475. return response.json(10, repr(e))
  476. else:
  477. dvqs = Device_Info.objects.filter(id=pk).values('id', 'userID', 'NickName', 'UID',
  478. 'View_Account',
  479. 'View_Password', 'ChannelIndex', 'Type',
  480. 'isShare',
  481. 'primaryUserID', 'primaryMaster', 'vodPrimaryUserID', 'vodPrimaryMaster', 'userID__userEmail',
  482. 'data_joined', 'version',
  483. 'isVod', 'isExist', 'isCameraOpenCloud', 'serial_number')
  484. dvql = CommonService.qs_to_list(dvqs)
  485. ubqs = UID_Bucket.objects.filter(uid=UID). \
  486. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  487. res = dvql[0]
  488. res['vod'] = list(ubqs)
  489. # 新增获取IOT证书内容
  490. iotqs = iotdeviceInfoModel.objects.filter(serial_number=dvql[0]['serial_number'])
  491. if iotqs.exists():
  492. res['iot'].append(
  493. {
  494. 'endpoint': iotqs[0].endpoint,
  495. 'token_iot_number': iotqs[0].endpoint
  496. }
  497. )
  498. if isMainUserExists:
  499. res['isMainUserExists'] = 1
  500. return response.json(0, res)
  501. else:
  502. return response.json(444, {'param': 'UID'})
  503. else:
  504. return response.json(tko.code)
  505. else:
  506. return response.json(444, {'param': 'UID,NickName,View_Account,View_Password,Type,ChannelIndex,version'})
  507. # 添加设备字段
  508. def judgeInterface(request):
  509. request.encoding = 'utf-8'
  510. response = ResponseObject()
  511. if request.method == 'POST':
  512. request_dict = request.POST
  513. elif request.method == 'GET':
  514. request_dict = request.GET
  515. else:
  516. return response.json(444)
  517. token = request_dict.get('token', None)
  518. uid = request_dict.get('uid', None)
  519. if all([uid, token]):
  520. tko = TokenObject(token)
  521. response.lang = tko.lang
  522. if tko.code == 0:
  523. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  524. if re_uid.match(uid):
  525. is_bind = Device_Info.objects.filter(UID=uid, isShare=False)
  526. # 判断是否有已绑定用户
  527. if is_bind:
  528. qs = is_bind.values('userID__NickName', 'NickName')
  529. nickname = qs[0]['NickName']
  530. us_qs = UidSetModel.objects.filter(uid=uid).values('nickname')
  531. if us_qs.exists():
  532. nickname = us_qs[0]['NickName']
  533. res = {
  534. 'bind_user': qs[0]['userID__NickName'],
  535. 'bind_device_name': nickname,
  536. }
  537. return response.json(15, res=res)
  538. else:
  539. return response.json(0, 'no bind user')
  540. else:
  541. return response.json(444, {'param': 'UID'})
  542. else:
  543. return response.json(tko.code)
  544. else:
  545. return response.json(444, {'param': 'UID,NickName,View_Account,View_Password,Type,ChannelIndex'})
  546. # 管理员添加
  547. def admin_addInterface(request):
  548. request.encoding = 'utf-8'
  549. response = ResponseObject()
  550. if request.method == 'POST':
  551. request_dict = request.POST
  552. elif request.method == 'GET':
  553. request_dict = request.GET
  554. else:
  555. return response.json(444)
  556. token = request_dict.get('token', None)
  557. deviceContent = request_dict.get('content', None)
  558. ipdizhi = request_dict.get('ipdizhi', None)
  559. username = request_dict.get('username', None)
  560. if not username:
  561. return response.json(444, 'username')
  562. if not deviceContent:
  563. return response.json(444, 'content')
  564. tko = TokenObject(token)
  565. response.lang = tko.lang
  566. if tko.code != 0:
  567. return response.json(tko.code)
  568. userID = tko.userID
  569. own_perm = ModelService.check_perm(userID, 40)
  570. # 权限判断
  571. if own_perm is not True:
  572. return response.json(404)
  573. # 查询id
  574. user = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
  575. if user.exists():
  576. user_dict = CommonService.qs_to_dict(user)
  577. userID = user_dict.get('datas')[0].get('pk')
  578. else:
  579. return response.json(104)
  580. print(deviceContent)
  581. try:
  582. deviceData = json.loads(deviceContent)
  583. UID = deviceData.get('UID', None)
  584. if not UID:
  585. return response.json(444, 'content')
  586. dValid = Device_Info.objects.filter(userID_id=userID, UID=UID)
  587. if dValid:
  588. return response.json(174)
  589. else:
  590. UID = deviceData.get('UID', '')
  591. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  592. # redisObj = RedisObject(db=8)
  593. # redisObj.del_data(key='uid_qs_' + userID)
  594. if re_uid.match(UID):
  595. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  596. **deviceData)
  597. userDevice.save()
  598. file_path = '/'.join((BASE_DIR, 'static/test.log'))
  599. file = open(file_path, 'a+')
  600. file.write(ipdizhi + "; username:" + username + "; time:" + time.strftime("%Y-%m-%d %H:%M:%S",
  601. time.localtime()))
  602. file.write('\n')
  603. file.flush()
  604. file.close()
  605. # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  606. # # 判断是否有已绑定用户
  607. # if not is_bind.exists():
  608. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  609. # **deviceData)
  610. # userDevice.save()
  611. # else:
  612. # # 分享添加
  613. # if 'isShare' in deviceData:
  614. # deviceData['isShare'] = True
  615. # else:
  616. # deviceData['isShare'] = True
  617. # bind_userID = is_bind[0].userID_id
  618. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
  619. # userID_id=userID,
  620. # primaryUserID=bind_userID,
  621. # primaryMaster=ModelService.get_user_name(bind_userID),
  622. # **deviceData)
  623. # userDevice.save()
  624. else:
  625. return response.json(444, 'UID')
  626. except Exception as e:
  627. errorInfo = traceback.format_exc()
  628. print('添加设备错误: %s ' % errorInfo)
  629. return response.json(178, repr(e))
  630. else:
  631. sqlDict = CommonService.qs_to_dict([userDevice])
  632. return response.json(0, sqlDict)
  633. # 超级管理员修改设备
  634. def admin_modifyInterface(request):
  635. response = ResponseObject()
  636. if request.method == 'POST':
  637. request.encoding = 'utf-8'
  638. request_dict = request.POST
  639. elif request.method == 'GET':
  640. request.encoding = 'utf-8'
  641. request_dict = request.GET
  642. else:
  643. return response.json(444)
  644. token = request_dict.get('token', None)
  645. deviceContent = request_dict.get('content', None)
  646. username = request_dict.get('username', None)
  647. if not username:
  648. return response.json(444, 'username')
  649. id = request_dict.get('id', None)
  650. print(deviceContent)
  651. if not deviceContent or not id:
  652. return response.json(444, 'content,id')
  653. tko = TokenObject(token)
  654. response.lang = tko.lang
  655. if tko.code != 0:
  656. return response.json(tko.code)
  657. userID = tko.userID
  658. if userID is None:
  659. return response.json(309)
  660. own_perm = ModelService.check_perm(userID, 50)
  661. # 权限判断
  662. if own_perm is not True:
  663. return response.json(404)
  664. deviceData = json.loads(deviceContent)
  665. print(deviceData['UID'])
  666. # redisObj = RedisObject(db=8)
  667. # redisObj.del_data(key='uid_qs_' + userID)
  668. dValid = Device_Info.objects.filter(userID_id=userID, UID=deviceData['UID'])
  669. if dValid.exists():
  670. dValid_dict = CommonService.qs_to_dict(dValid)
  671. print(dValid_dict.get('datas')[0].get('pk'))
  672. if dValid_dict.get('datas')[0].get('pk') == id:
  673. print('可以编辑')
  674. else:
  675. return response.json(174)
  676. # 查询id
  677. user = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
  678. if user.exists():
  679. user_dict = CommonService.qs_to_dict(user)
  680. userID = user_dict.get('datas')[0].get('pk')
  681. try:
  682. # 更改的时间
  683. update_time = timezone.localtime(timezone.now())
  684. Device_Info.objects.filter(userID_id=userID, id=id).update(update_time=update_time, **deviceData)
  685. except Exception as e:
  686. return response.json(177, repr(e))
  687. else:
  688. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  689. res = CommonService.qs_to_dict(qs)
  690. return response.json(0, res)
  691. else:
  692. # 查询id
  693. user = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
  694. if user.exists():
  695. user_dict = CommonService.qs_to_dict(user)
  696. userID = user_dict.get('datas')[0].get('pk')
  697. try:
  698. # 更改的时间
  699. update_time = timezone.localtime(timezone.now())
  700. Device_Info.objects.filter(userID_id=userID, id=id).update(update_time=update_time, **deviceData)
  701. except Exception as e:
  702. return response.json(177, repr(e))
  703. else:
  704. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  705. res = CommonService.qs_to_dict(qs)
  706. return response.json(0, res)
  707. # 新删除设备
  708. def deleteInterface(request):
  709. '''
  710. 删除用户设备
  711. :param request:
  712. :return:
  713. '''
  714. response = ResponseObject()
  715. request.encoding = 'utf-8'
  716. if request.method == 'POST':
  717. request_dict = request.POST
  718. elif request.method == 'GET':
  719. request_dict = request.GET
  720. else:
  721. return response.json(444)
  722. token = request_dict.get('token', None)
  723. id = request_dict.get('id', None)
  724. if not id:
  725. return response.json(444, 'id')
  726. tko = TokenObject(token)
  727. response.lang = tko.lang
  728. if tko.code != 0:
  729. return response.json(tko.code)
  730. userID = tko.userID
  731. # 主用户删除设备全部删除
  732. if not userID:
  733. return response.json(309)
  734. try:
  735. dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  736. if dv_qs.exists():
  737. uid = dv_qs[0].UID
  738. asy = threading.Thread(target=ModelService.delete_log,
  739. args=(CommonService.get_ip_address(request), userID, 'deleteV2', uid))
  740. asy.start()
  741. if userID == dv_qs[0].vodPrimaryUserID:
  742. Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
  743. if dv_qs[0].isShare:
  744. dv_qs.delete()
  745. else:
  746. # a.主用户删除设备
  747. dv_qs.delete()
  748. # 删除设备影子信息uid_set 外键关联删除设备推送配置信息 uid_push
  749. up_qs = UidPushModel.objects.filter(uid_set__uid=uid)
  750. DetectControllerView().do_delete_redis(uid)
  751. if up_qs.count() > 1:
  752. UidPushModel.objects.filter(uid_set__uid=uid, userID_id=userID).delete()
  753. redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
  754. ykey = '{uid}_redis_qs'.format(uid=uid)
  755. if ykey:
  756. redisObj.del_data(key=ykey)
  757. else:
  758. up_qs.delete()
  759. # b.分享获得用户假删除
  760. ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True, primaryUserID=userID)
  761. if ud_dv_qs.exists():
  762. ud_dv_qs.update(isExist=0)
  763. # 异步删除推送消息
  764. asy = threading.Thread(target=ModelService.del_eq_info, args=(userID, uid))
  765. asy.start()
  766. # redisObj = RedisObject(db=8)
  767. # redisObj.del_data(key='uid_qs_' + userID)
  768. else:
  769. return response.json(14)
  770. except Exception as e:
  771. errorInfo = traceback.format_exc()
  772. print('删除数据库记录错误: %s' % errorInfo)
  773. return response.json(176, repr(e))
  774. else:
  775. return response.json(0)
  776. # 新查询设备字段
  777. def queryInterface(request):
  778. request.encoding = 'utf-8'
  779. response = ResponseObject()
  780. if request.method == 'POST':
  781. request_dict = request.POST
  782. elif request.method == 'GET':
  783. request_dict = request.GET
  784. else:
  785. return response.json(444)
  786. token = request_dict.get('token', None)
  787. page = request_dict.get('page', None)
  788. line = request_dict.get('line', None)
  789. NickName = request_dict.get('NickName', None)
  790. uid = request_dict.get('uid', None)
  791. page = int(page)
  792. line = int(line)
  793. tko = TokenObject(token)
  794. response.lang = tko.lang
  795. if page <= 0:
  796. return response.json(0)
  797. if tko.code == 0:
  798. userID = tko.userID
  799. dvqs = Device_Info.objects.filter(userID_id=userID)
  800. # # 已重置的设备
  801. # dvqs = dvqs.filter(~Q(isExist=2))
  802. if NickName:
  803. dvqs = dvqs.filter(NickName__icontains=NickName)
  804. if uid:
  805. dvqs = dvqs.filter(UID=uid)
  806. # count = dvqs.count()
  807. dvql = dvqs[(page - 1) * line:page * line].values('id', 'userID', 'NickName', 'UID', 'View_Account',
  808. 'View_Password', 'ChannelIndex', 'Type', 'isShare',
  809. 'primaryUserID', 'primaryMaster', 'data_joined', 'version', 'vodPrimaryUserID', 'vodPrimaryMaster', 'userID__userEmail',
  810. 'isVod', 'isExist', 'NotificationMode', 'isCameraOpenCloud', 'serial_number')
  811. dvls = CommonService.qs_to_list(dvql)
  812. uid_list = []
  813. serial_number_list = []
  814. for dvl in dvls:
  815. if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
  816. dvl['isPrimaryUser'] = 1
  817. else:
  818. dvl['isPrimaryUser'] = 0
  819. uid_list.append(dvl['UID'])
  820. serial_number_list.append(dvl['serial_number'][0:6])
  821. #新增获取IOT证书内容
  822. iotqs = iotdeviceInfoModel.objects.filter(serial_number__in=serial_number_list)
  823. ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
  824. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  825. upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
  826. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  827. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  828. nowTime = int(time.time())
  829. data = []
  830. # 设备拓展信息表
  831. us_qs = UidSetModel.objects.filter(uid__in=uid_list).\
  832. values('uid', 'version', 'nickname', 'detect_interval')
  833. uv_dict = {}
  834. for us in us_qs:
  835. uv_dict[us['uid']] = {'version': us['version'],
  836. 'nickname': us['nickname'],
  837. 'detect_interval': us['detect_interval']}
  838. for p in dvls:
  839. #新增IOT
  840. p['iot'] = []
  841. for iot in iotqs:
  842. if p['serial_number'][0:6] == iot.serial_number:
  843. p['iot'].append(
  844. {
  845. 'endpoint':iot.endpoint,
  846. 'token_iot_number':iot.token_iot_number
  847. }
  848. )
  849. p['vod'] = []
  850. for dm in ubqs:
  851. if p['UID'] == dm['uid']:
  852. if dm['endTime'] > nowTime:
  853. p['vod'].append(dm)
  854. p['preview'] = []
  855. for up in upqs:
  856. if p['UID'] == up['uid']:
  857. obj = 'uid_preview/{uid}/channel_{channel}.png'.\
  858. format(uid=up['uid'], channel=up['channel'])
  859. img_sign = bucket.sign_url('GET', obj, 300)
  860. p['preview'].append(img_sign)
  861. p_uid = p['UID']
  862. if p_uid in uv_dict:
  863. # 设备版本号
  864. p['uid_version'] = uv_dict[p_uid]['version']
  865. p['detect_interval'] = uv_dict[p_uid]['detect_interval']
  866. # 设备昵称 调用影子信息昵称,先阶段不可
  867. if uv_dict[p_uid]['nickname']:
  868. p['NickName'] = uv_dict[p_uid]['nickname']
  869. else:
  870. # 设备版本号
  871. p['uid_version'] = ''
  872. data.append(p)
  873. return response.json(0, data)
  874. else:
  875. return response.json(tko.code)
  876. def uid_status(request):
  877. request.encoding = 'utf-8'
  878. response = ResponseObject()
  879. if request.method == 'POST':
  880. request_dict = request.POST
  881. elif request.method == 'GET':
  882. request_dict = request.GET
  883. else:
  884. return response.json(444)
  885. token = request_dict.get('token', None)
  886. uid = request_dict.get('uid', None)
  887. tko = TokenObject(token)
  888. response.lang = tko.lang
  889. if tko.code != 0:
  890. return response.json(tko.code)
  891. userID = tko.userID
  892. # 调试
  893. logger = logging.getLogger('django')
  894. debugOne = int(time.time())
  895. # 判断用户是否绑定设备
  896. qs = UidSetModel.objects.filter(uid=uid).values('uid', 'detect_status', 'detect_interval', 'version', 'ucode',
  897. 'p2p_region', 'tz', 'video_code', 'channel', 'cloud_vod', 'id',
  898. 'detect_group', 'is_alexa', 'region_alexa')
  899. # 调试
  900. debugOnes = int(time.time())
  901. logger.error('————————debugOne_sec:', debugOnes - debugOne)
  902. # 判断uid配置表信息是否存在
  903. if qs.exists():
  904. # 获取uid推送是否添加过
  905. us_id = qs[0]['id']
  906. # 调试
  907. debugTwo = int(time.time())
  908. if UidPushModel.objects.filter(uid_set_id=us_id, userID_id=userID).exists():
  909. detect_status = qs[0]['detect_status']
  910. else:
  911. detect_status = 0
  912. data = {
  913. 'push_status': detect_status, # 推送状态
  914. 'push_interval': qs[0]['detect_interval'], # 推送间隔
  915. 'ucode': qs[0]['ucode'],
  916. 'version': qs[0]['version'],
  917. 'p2p_region': qs[0]['p2p_region'],
  918. 'tz': qs[0]['tz'],
  919. 'video_code': qs[0]['video_code'],
  920. 'channel': qs[0]['channel'],
  921. 'cloud_vod': qs[0]['cloud_vod'],
  922. 'detect_group': qs[0]['detect_group'], # 推送组
  923. 'is_alexa': qs[0]['is_alexa'], # 推送组
  924. 'region_alexa': qs[0]['region_alexa'], # 推送组
  925. }
  926. # 调试
  927. debugTwos = int(time.time())
  928. logger.error('————————debugTwo_sec:', debugTwos - debugTwo)
  929. # 调试
  930. debugThere = int(time.time())
  931. # 查询云存储相关信息
  932. ubqs = UID_Bucket.objects.filter(uid=uid). \
  933. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  934. # 调试
  935. debugTheres = int(time.time())
  936. logger.error('————————debugTheres_sec:', debugTheres - debugThere)
  937. nowTime = int(time.time())
  938. if ubqs.exists():
  939. if ubqs[0]['endTime'] > nowTime:
  940. data['vod'] = list(ubqs)
  941. return response.json(0, data)
  942. else:
  943. return response.json(0)
  944. def uid_status_test(request):
  945. request.encoding = 'utf-8'
  946. response = ResponseObject()
  947. if request.method == 'POST':
  948. request_dict = request.POST
  949. elif request.method == 'GET':
  950. request_dict = request.GET
  951. else:
  952. return response.json(444)
  953. token = request_dict.get('token', None)
  954. uid = request_dict.get('uid', None)
  955. tko = TokenObject(token)
  956. response.lang = tko.lang
  957. if tko.code != 0:
  958. return response.json(tko.code)
  959. userID = tko.userID
  960. # 判断用户是否绑定设备
  961. print(100000000000)
  962. qs = UidSetModel.objects.filter(uid=uid).values('uid', 'detect_status', 'detect_interval', 'version', 'ucode',
  963. 'p2p_region', 'tz', 'video_code', 'channel', 'cloud_vod', 'id',
  964. 'detect_group', 'is_alexa', 'region_alexa')
  965. # 判断uid配置表信息是否存在
  966. if qs.exists():
  967. # 获取uid推送是否添加过
  968. print(1111111111111)
  969. us_id = qs[0]['id']
  970. if UidPushModel.objects.filter(uid_set_id=us_id, userID_id=userID).exists():
  971. detect_status = qs[0]['detect_status']
  972. else:
  973. detect_status = 0
  974. data = {
  975. 'push_status': detect_status, # 推送状态
  976. 'push_interval': qs[0]['detect_interval'], # 推送间隔
  977. 'ucode': qs[0]['ucode'],
  978. 'version': qs[0]['version'],
  979. 'p2p_region': qs[0]['p2p_region'],
  980. 'tz': qs[0]['tz'],
  981. 'video_code': qs[0]['video_code'],
  982. 'channel': qs[0]['channel'],
  983. 'cloud_vod': qs[0]['cloud_vod'],
  984. 'detect_group': qs[0]['detect_group'], # 推送组
  985. 'is_alexa': qs[0]['is_alexa'], # 推送组
  986. 'region_alexa': qs[0]['region_alexa'], # 推送组
  987. }
  988. print(22222222222)
  989. # 查询云存储相关信息
  990. ubqs = UID_Bucket.objects.filter(uid=uid). \
  991. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  992. nowTime = int(time.time())
  993. if ubqs.exists():
  994. if ubqs[0]['endTime'] > nowTime:
  995. data['vod'] = list(ubqs)
  996. print(3333333333333)
  997. return response.json(0, data)
  998. else:
  999. return response.json(0)
  1000. def update_uid_set(request):
  1001. request.encoding = 'utf-8'
  1002. response = ResponseObject()
  1003. if request.method == 'POST':
  1004. request_dict = request.POST
  1005. elif request.method == 'GET':
  1006. request_dict = request.GET
  1007. else:
  1008. return response.json(444)
  1009. token = request_dict.get('token', None)
  1010. uid = request_dict.get('uid', None)
  1011. version = request_dict.get('version', '')
  1012. ucode = request_dict.get('ucode', '')
  1013. tko = TokenObject(token)
  1014. response.lang = tko.lang
  1015. if tko.code == 0:
  1016. userID = tko.userID
  1017. nowTime = int(time.time())
  1018. dvqs = Device_Info.objects.filter(userID_id=userID)
  1019. # redisObj = RedisObject(db=8)
  1020. # redisObj.del_data(key='uid_qs_' + userID)
  1021. if dvqs.exists():
  1022. us_qs = UidSetModel.objects.filter(uid=uid)
  1023. if us_qs.exists():
  1024. uid_set_update_dict = {
  1025. 'updTime': nowTime,
  1026. 'version': version,
  1027. 'ucode': ucode,
  1028. }
  1029. us_qs.update(**uid_set_update_dict)
  1030. else:
  1031. uid_set_create_dict = {
  1032. 'uid': uid,
  1033. 'addTime': nowTime,
  1034. 'updTime': nowTime,
  1035. 'version': version,
  1036. 'ucode': ucode,
  1037. }
  1038. UidSetModel.objects.create(**uid_set_create_dict)
  1039. return response.json(0)
  1040. else:
  1041. return response.json(14)
  1042. else:
  1043. return response.json(tko.code)
  1044. # 测试环境
  1045. # test.shadow.dvema.com
  1046. # 生产环境
  1047. # shadow.dvema.com
  1048. # http://test.dvema.com/deviceShadow/update?etk=JVJWbFpFU0VOV1FsbEVTMFpOU2xKWFFURXhNVUU9Xz0=&ucode=1234&version=1324&p2p_region=CN
  1049. # 设备影子更新
  1050. def update_device_shadow(request):
  1051. request.encoding = 'utf-8'
  1052. response = ResponseObject()
  1053. if request.method == 'POST':
  1054. request_dict = request.POST
  1055. elif request.method == 'GET':
  1056. request_dict = request.GET
  1057. else:
  1058. return response.json(444)
  1059. etk = request_dict.get('etk', None)
  1060. eto = ETkObject(etk)
  1061. uid = eto.uid
  1062. if uid:
  1063. # 重置按钮
  1064. is_reset = request_dict.get('is_reset', None)
  1065. # 传1则重置设备信息
  1066. if is_reset == '1':
  1067. UidSetModel.objects.filter(uid=uid).delete()
  1068. # 重置设备,判断设备为已删除
  1069. nowTime = int(time.time())
  1070. uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=nowTime).values('id', 'has_unused').order_by('addTime')
  1071. if not uid_bucket.exists():
  1072. di_qs = Device_Info.objects.filter(UID=uid)
  1073. di_qs.update(isExist=2)
  1074. # 清除redis缓存
  1075. # data = di_qs.values()
  1076. # redisObj = RedisObject(db=8)
  1077. # for di in data:
  1078. # key = 'uid_qs_' + di['userID_id']
  1079. # redis_value = redisObj.get_data(key=key)
  1080. # if redis_value is not False:
  1081. # redisObj.del_data(key)
  1082. ucode = request_dict.get('ucode', None)
  1083. version = request_dict.get('version', None)
  1084. p2p_region = request_dict.get('p2p_region', None)
  1085. tz = request_dict.get('tz', None)
  1086. video_code = request_dict.get('video_code', None)
  1087. ip = CommonService.get_ip_address(request)
  1088. channel = request_dict.get('channel', None)
  1089. cloud_vod = request_dict.get('cloud_vod', None)
  1090. push_status = request_dict.get('push_status', None)
  1091. pwd = request_dict.get('pwd', None)
  1092. resetTime = request_dict.get('resetTime', None)
  1093. is_alexa = request_dict.get('is_alexa', None)
  1094. us_qs = UidSetModel.objects.filter(uid=uid)
  1095. # 更新
  1096. nowTime = int(time.time())
  1097. print('-------')
  1098. print(resetTime)
  1099. print('-------')
  1100. qs_dict = {
  1101. 'updTime': nowTime,
  1102. 'ip': ip
  1103. }
  1104. if channel:
  1105. qs_dict['channel'] = channel
  1106. if p2p_region:
  1107. qs_dict['p2p_region'] = p2p_region
  1108. if ucode:
  1109. qs_dict['ucode'] = ucode
  1110. if version:
  1111. qs_dict['version'] = version
  1112. if tz:
  1113. qs_dict['tz'] = tz
  1114. if video_code:
  1115. qs_dict['video_code'] = video_code
  1116. if cloud_vod:
  1117. qs_dict['cloud_vod'] = cloud_vod
  1118. if push_status:
  1119. qs_dict['detect_status'] = push_status
  1120. if pwd:
  1121. qs_dict['pwd'] = pwd
  1122. if is_alexa:
  1123. qs_dict['is_alexa'] = is_alexa
  1124. if us_qs.exists():
  1125. us_qs.update(**qs_dict)
  1126. # 如果推送状态开启,返回推送url
  1127. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
  1128. # 新增
  1129. else:
  1130. qs_dict['uid'] = uid
  1131. qs_dict['addTime'] = nowTime
  1132. UidSetModel.objects.create(**qs_dict)
  1133. # 如果推送状态开启,返回推送url
  1134. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
  1135. else:
  1136. return JsonResponse(status=200, data={'code': 403, 'msg': 'error etk'})