EquipmentManager.py 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. import re
  2. import time
  3. import traceback
  4. import simplejson as json
  5. from django.utils import timezone
  6. from Model.models import Device_User, Device_Info, UID_Bucket, UID_Preview, UidSetModel
  7. from django.db.models import Q
  8. from Object.ResponseObject import ResponseObject
  9. from Object.TokenObject import TokenObject
  10. from Service.CommonService import CommonService
  11. from Service.ModelService import ModelService
  12. from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
  13. from Object.ETkObject import ETkObject
  14. import oss2
  15. from django.http import JsonResponse
  16. # 查询用户设备
  17. def queryUserEquipmentInterface(request):
  18. request.encoding = 'utf-8'
  19. response = ResponseObject()
  20. if request.method == 'POST':
  21. request_dict = request.POST
  22. elif request.method == 'GET':
  23. request_dict = request.GET
  24. else:
  25. return response.json(444)
  26. token = request_dict.get('token', None)
  27. tko = TokenObject(token)
  28. response.lang = tko.lang
  29. if tko.code != 0:
  30. return response.json(tko.code)
  31. userID = tko.userID
  32. if not userID:
  33. return response.json(309)
  34. dvqs = Device_Info.objects.filter(userID_id=userID)
  35. dvdict = CommonService.qs_to_dict(dvqs)
  36. uid_list = Device_Info.objects.filter(userID_id=userID, isShare=False). \
  37. values_list('UID', flat=True)
  38. ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
  39. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  40. res = []
  41. nowTime = int(time.time())
  42. for p in dvdict['datas']:
  43. p['fields']['vod'] = []
  44. for dm in ubqs:
  45. if p['fields']['UID'] == dm['uid']:
  46. if dm['endTime'] > nowTime:
  47. p['fields']['vod'].append(dm)
  48. # dm['valid'] = 1
  49. # else:
  50. # dm['valid'] = 0
  51. # p['fields']['primaryUserID'] = ''
  52. res.append(p)
  53. return response.json(0, {'datas': res})
  54. def addNewUserEquipmentInterface(request):
  55. request.encoding = 'utf-8'
  56. response = ResponseObject()
  57. if request.method == 'POST':
  58. request_dict = request.POST
  59. elif request.method == 'GET':
  60. request_dict = request.GET
  61. else:
  62. return response.json(444)
  63. token = request_dict.get('token', None)
  64. deviceContent = request_dict.get('content', None)
  65. if not deviceContent:
  66. return response.json(444, 'content')
  67. tko = TokenObject(token)
  68. response.lang = tko.lang
  69. if tko.code != 0:
  70. return response.json(tko.code)
  71. userID = tko.userID
  72. try:
  73. deviceData = json.loads(deviceContent)
  74. UID = deviceData.get('UID', None)
  75. if not UID:
  76. return response.json(444, 'content')
  77. dValid = Device_Info.objects.filter(userID_id=userID, UID=UID)
  78. if dValid:
  79. return response.json(174)
  80. else:
  81. UID = deviceData.get('UID', '')
  82. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  83. if re_uid.match(UID):
  84. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  85. **deviceData)
  86. userDevice.save()
  87. # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  88. # # 判断是否有已绑定用户
  89. # if not is_bind.exists():
  90. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  91. # **deviceData)
  92. # userDevice.save()
  93. # else:
  94. # # 分享添加
  95. # if 'isShare' in deviceData:
  96. # deviceData['isShare'] = True
  97. # else:
  98. # deviceData['isShare'] = True
  99. # bind_userID = is_bind[0].userID_id
  100. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
  101. # userID_id=userID,
  102. # primaryUserID=bind_userID,
  103. # primaryMaster=ModelService.get_user_name(bind_userID),
  104. # **deviceData)
  105. # userDevice.save()
  106. else:
  107. return response.json(444, 'UID')
  108. except Exception as e:
  109. errorInfo = traceback.format_exc()
  110. print('添加设备错误: %s ' % errorInfo)
  111. return response.json(178, repr(e))
  112. else:
  113. sqlDict = CommonService.qs_to_dict([userDevice])
  114. return response.json(0, sqlDict)
  115. def delUserEquipmentInterface(request):
  116. '''
  117. 删除用户设备
  118. :param request:
  119. :return:
  120. '''
  121. response = ResponseObject()
  122. request.encoding = 'utf-8'
  123. if request.method == 'POST':
  124. request_dict = request.POST
  125. elif request.method == 'GET':
  126. request_dict = request.GET
  127. else:
  128. return response.json(444)
  129. token = request_dict.get('token', None)
  130. id = request_dict.get('id', None)
  131. if not id:
  132. return response.json(444, 'id')
  133. tko = TokenObject(token)
  134. response.lang = tko.lang
  135. if tko.code != 0:
  136. return response.json(tko.code)
  137. userID = tko.userID
  138. # 主用户删除设备全部删除
  139. try:
  140. Device_Info.objects.filter(userID_id=userID, id=id).delete()
  141. except Exception as e:
  142. errorInfo = traceback.format_exc()
  143. print('删除数据库记录错误: %s' % errorInfo)
  144. return response.json(176, repr(e))
  145. else:
  146. return response.json(0)
  147. def modifyUserEquipmentInterface(request):
  148. '''
  149. 修改用户设备
  150. :param request:
  151. :return:
  152. '''
  153. response = ResponseObject()
  154. if request.method == 'POST':
  155. request.encoding = 'utf-8'
  156. request_dict = request.POST
  157. elif request.method == 'GET':
  158. request.encoding = 'utf-8'
  159. request_dict = request.GET
  160. else:
  161. return response.json(444)
  162. token = request_dict.get('token', None)
  163. deviceContent = request_dict.get('content', None)
  164. id = request_dict.get('id', None)
  165. if not deviceContent or not id:
  166. return response.json(444, 'content,id')
  167. tko = TokenObject(token)
  168. response.lang = tko.lang
  169. if tko.code != 0:
  170. return response.json(tko.code)
  171. userID = tko.userID
  172. if userID is None:
  173. return response.json(309)
  174. try:
  175. deviceData = json.loads(deviceContent)
  176. Device_Info.objects.filter(userID_id=userID, id=id).update(**deviceData)
  177. except Exception as e:
  178. return response.json(177, repr(e))
  179. else:
  180. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  181. res = CommonService.qs_to_dict(qs)
  182. return response.json(0, res)
  183. def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
  184. request.encoding = 'utf-8'
  185. response = ResponseObject()
  186. if request.method == 'POST':
  187. fieldDict = request.POST
  188. elif request.method == 'GET':
  189. fieldDict = request.GET
  190. else:
  191. return response.json(444)
  192. token = request.POST.get('token', None)
  193. type = request.POST.get('type', None)
  194. tko = TokenObject(token)
  195. response.lang = tko.lang
  196. if tko.code != 0:
  197. return response.json(tko.code)
  198. userID = tko.userID
  199. if not userID:
  200. return response.json(309)
  201. own_perm = ModelService.check_perm(userID=userID, permID=30)
  202. if not own_perm:
  203. return response.json(404)
  204. if type == 'PC':
  205. page = int(fieldDict['page'])
  206. line = int(fieldDict['line'])
  207. qs = Device_Info.objects.all()
  208. count = qs.count()
  209. res = qs[(page - 1) * line:page * line]
  210. sqlDict = CommonService.qs_to_dict(query_set=res)
  211. sqlDict['count'] = count
  212. return response.json(0, sqlDict)
  213. else:
  214. qs = Device_Info.objects.all()
  215. res = CommonService.qs_to_dict(qs)
  216. return response.json(0, res)
  217. def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
  218. request.encoding = 'utf-8'
  219. response = ResponseObject()
  220. if request.method == 'GET':
  221. fieldDict = request.GET
  222. elif request.method == 'POST':
  223. fieldDict = request.POST
  224. else:
  225. return response.json(444)
  226. deviceContent = fieldDict.get('content', None)
  227. token = fieldDict.get('token', None)
  228. tko = TokenObject(token)
  229. response.lang = tko.lang
  230. if tko.code != 0:
  231. return response.json(tko.code)
  232. if deviceContent:
  233. try:
  234. searchCondition = json.loads(deviceContent)
  235. except Exception as e:
  236. print(repr(e))
  237. return response.json(10, repr(e))
  238. else:
  239. kwargs = CommonService.get_kwargs(data=searchCondition)
  240. qs = Device_Info.objects.filter(**kwargs)
  241. page = int(fieldDict['page'])
  242. line = int(fieldDict['line'])
  243. count = qs.count()
  244. res = qs[(page - 1) * line:page * line]
  245. send_dict = CommonService.qs_to_dict(query_set=res)
  246. for k, v in enumerate(send_dict["datas"]):
  247. for val in res:
  248. if v['pk'] == val.id:
  249. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  250. send_dict["datas"][k]['fields']['username'] = username
  251. primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  252. send_dict["datas"][k]['fields']['primaryusername'] = primary
  253. send_dict['count'] = count
  254. return response.json(0, send_dict)
  255. else:
  256. qs = Device_Info.objects.all()
  257. page = int(fieldDict['page'])
  258. line = int(fieldDict['line'])
  259. count = qs.count()
  260. res = qs[(page - 1) * line:page * line]
  261. send_dict = CommonService.qs_to_dict(query_set=res)
  262. for k, v in enumerate(send_dict["datas"]):
  263. for val in res:
  264. if v['pk'] == val.id:
  265. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  266. send_dict["datas"][k]['fields']['username'] = username
  267. primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  268. send_dict["datas"][k]['fields']['primaryusername'] = primary
  269. send_dict['count'] = count
  270. return response.json(0, send_dict)
  271. # 添加设备字段
  272. def addInterface(request):
  273. request.encoding = 'utf-8'
  274. response = ResponseObject()
  275. if request.method == 'POST':
  276. request_dict = request.POST
  277. elif request.method == 'GET':
  278. request_dict = request.GET
  279. else:
  280. return response.json(444)
  281. token = request_dict.get('token', None)
  282. UID = request_dict.get('UID', None)
  283. NickName = request_dict.get('NickName', None)
  284. View_Account = request_dict.get('View_Account', None)
  285. View_Password = request_dict.get('View_Password', '')
  286. Type = request_dict.get('Type', None)
  287. ChannelIndex = request_dict.get('ChannelIndex', None)
  288. if all([UID, NickName, View_Account, Type, ChannelIndex]):
  289. tko = TokenObject(token)
  290. response.lang = tko.lang
  291. if tko.code == 0:
  292. userID = tko.userID
  293. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  294. if re_uid.match(UID):
  295. is_exist = Device_Info.objects.filter(UID=UID, userID_id=userID)
  296. if is_exist:
  297. return response.json(174)
  298. else:
  299. # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  300. # # 判断是否有已绑定用户
  301. # if is_bind:
  302. # return response.json(15)
  303. try:
  304. pk = CommonService.getUserID(getUser=False)
  305. userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
  306. NickName=NickName, View_Account=View_Account,
  307. View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex)
  308. userDevice.save()
  309. except Exception as e:
  310. return response.json(10, repr(e))
  311. else:
  312. dvqs = Device_Info.objects.filter(id=pk).values('id', 'userID', 'NickName', 'UID',
  313. 'View_Account',
  314. 'View_Password', 'ChannelIndex', 'Type',
  315. 'isShare',
  316. 'primaryUserID', 'primaryMaster',
  317. 'data_joined', 'version',
  318. 'isVod', 'isExist')
  319. dvql = CommonService.qs_to_list(dvqs)
  320. ubqs = UID_Bucket.objects.filter(uid=UID). \
  321. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  322. res = dvql[0]
  323. res['vod'] = list(ubqs)
  324. return response.json(0, res)
  325. else:
  326. return response.json(444, {'param': 'UID'})
  327. else:
  328. return response.json(tko.code)
  329. else:
  330. return response.json(444, {'param': 'UID,NickName,View_Account,View_Password,Type,ChannelIndex'})
  331. # 管理员添加
  332. def admin_addInterface(request):
  333. request.encoding = 'utf-8'
  334. response = ResponseObject()
  335. if request.method == 'POST':
  336. request_dict = request.POST
  337. elif request.method == 'GET':
  338. request_dict = request.GET
  339. else:
  340. return response.json(444)
  341. token = request_dict.get('token', None)
  342. deviceContent = request_dict.get('content', None)
  343. username = request_dict.get('username', None)
  344. if not username:
  345. return response.json(444, 'username')
  346. if not deviceContent:
  347. return response.json(444, 'content')
  348. tko = TokenObject(token)
  349. response.lang = tko.lang
  350. if tko.code != 0:
  351. return response.json(tko.code)
  352. userID = tko.userID
  353. own_perm = ModelService.check_perm(userID, 40)
  354. # 权限判断
  355. if own_perm is not True:
  356. return response.json(404)
  357. # 查询id
  358. user = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
  359. if user.exists():
  360. user_dict = CommonService.qs_to_dict(user)
  361. userID = user_dict.get('datas')[0].get('pk')
  362. else:
  363. return response.json(104)
  364. print(deviceContent)
  365. try:
  366. deviceData = json.loads(deviceContent)
  367. UID = deviceData.get('UID', None)
  368. if not UID:
  369. return response.json(444, 'content')
  370. dValid = Device_Info.objects.filter(userID_id=userID, UID=UID)
  371. if dValid:
  372. return response.json(174)
  373. else:
  374. UID = deviceData.get('UID', '')
  375. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  376. if re_uid.match(UID):
  377. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  378. **deviceData)
  379. userDevice.save()
  380. # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  381. # # 判断是否有已绑定用户
  382. # if not is_bind.exists():
  383. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  384. # **deviceData)
  385. # userDevice.save()
  386. # else:
  387. # # 分享添加
  388. # if 'isShare' in deviceData:
  389. # deviceData['isShare'] = True
  390. # else:
  391. # deviceData['isShare'] = True
  392. # bind_userID = is_bind[0].userID_id
  393. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
  394. # userID_id=userID,
  395. # primaryUserID=bind_userID,
  396. # primaryMaster=ModelService.get_user_name(bind_userID),
  397. # **deviceData)
  398. # userDevice.save()
  399. else:
  400. return response.json(444, 'UID')
  401. except Exception as e:
  402. errorInfo = traceback.format_exc()
  403. print('添加设备错误: %s ' % errorInfo)
  404. return response.json(178, repr(e))
  405. else:
  406. sqlDict = CommonService.qs_to_dict([userDevice])
  407. return response.json(0, sqlDict)
  408. # 超级管理员修改设备
  409. def admin_modifyInterface(request):
  410. response = ResponseObject()
  411. if request.method == 'POST':
  412. request.encoding = 'utf-8'
  413. request_dict = request.POST
  414. elif request.method == 'GET':
  415. request.encoding = 'utf-8'
  416. request_dict = request.GET
  417. else:
  418. return response.json(444)
  419. token = request_dict.get('token', None)
  420. deviceContent = request_dict.get('content', None)
  421. username = request_dict.get('username', None)
  422. if not username:
  423. return response.json(444, 'username')
  424. id = request_dict.get('id', None)
  425. print(deviceContent)
  426. if not deviceContent or not id:
  427. return response.json(444, 'content,id')
  428. tko = TokenObject(token)
  429. response.lang = tko.lang
  430. if tko.code != 0:
  431. return response.json(tko.code)
  432. userID = tko.userID
  433. if userID is None:
  434. return response.json(309)
  435. own_perm = ModelService.check_perm(userID, 50)
  436. # 权限判断
  437. if own_perm is not True:
  438. return response.json(404)
  439. deviceData = json.loads(deviceContent)
  440. print(deviceData['UID'])
  441. dValid = Device_Info.objects.filter(userID_id=userID, UID=deviceData['UID'])
  442. if dValid.exists():
  443. dValid_dict = CommonService.qs_to_dict(dValid)
  444. print(dValid_dict.get('datas')[0].get('pk'))
  445. if dValid_dict.get('datas')[0].get('pk') == id:
  446. print('可以编辑')
  447. else:
  448. return response.json(174)
  449. # 查询id
  450. user = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
  451. if user.exists():
  452. user_dict = CommonService.qs_to_dict(user)
  453. userID = user_dict.get('datas')[0].get('pk')
  454. try:
  455. # 更改的时间
  456. update_time = timezone.localtime(timezone.now())
  457. Device_Info.objects.filter(userID_id=userID, id=id).update(update_time=update_time, **deviceData)
  458. except Exception as e:
  459. return response.json(177, repr(e))
  460. else:
  461. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  462. res = CommonService.qs_to_dict(qs)
  463. return response.json(0, res)
  464. else:
  465. # 查询id
  466. user = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username))
  467. if user.exists():
  468. user_dict = CommonService.qs_to_dict(user)
  469. userID = user_dict.get('datas')[0].get('pk')
  470. try:
  471. # 更改的时间
  472. update_time = timezone.localtime(timezone.now())
  473. Device_Info.objects.filter(userID_id=userID, id=id).update(update_time=update_time, **deviceData)
  474. except Exception as e:
  475. return response.json(177, repr(e))
  476. else:
  477. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  478. res = CommonService.qs_to_dict(qs)
  479. return response.json(0, res)
  480. # 新删除设备
  481. def deleteInterface(request):
  482. '''
  483. 删除用户设备
  484. :param request:
  485. :return:
  486. '''
  487. response = ResponseObject()
  488. request.encoding = 'utf-8'
  489. if request.method == 'POST':
  490. request_dict = request.POST
  491. elif request.method == 'GET':
  492. request_dict = request.GET
  493. else:
  494. return response.json(444)
  495. token = request_dict.get('token', None)
  496. id = request_dict.get('id', None)
  497. if not id:
  498. return response.json(444, 'id')
  499. tko = TokenObject(token)
  500. response.lang = tko.lang
  501. if tko.code != 0:
  502. return response.json(tko.code)
  503. userID = tko.userID
  504. # 主用户删除设备全部删除
  505. if not userID:
  506. return response.json(309)
  507. try:
  508. dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  509. uid = dv_qs[0].UID
  510. if dv_qs[0].isShare:
  511. dv_qs.delete()
  512. else:
  513. # 主用户删除设备
  514. dv_qs.delete()
  515. # 分享获得用户假删除
  516. ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True, primaryUserID=userID)
  517. if ud_dv_qs.exists():
  518. ud_dv_qs.update(isExist=0)
  519. except Exception as e:
  520. errorInfo = traceback.format_exc()
  521. print('删除数据库记录错误: %s' % errorInfo)
  522. return response.json(176, repr(e))
  523. else:
  524. return response.json(0)
  525. # 新查询设备字段
  526. def queryInterface(request):
  527. request.encoding = 'utf-8'
  528. response = ResponseObject()
  529. if request.method == 'POST':
  530. request_dict = request.POST
  531. elif request.method == 'GET':
  532. request_dict = request.GET
  533. else:
  534. return response.json(444)
  535. token = request_dict.get('token', None)
  536. page = request_dict.get('page', None)
  537. line = request_dict.get('line', None)
  538. NickName = request_dict.get('NickName', None)
  539. page = int(page)
  540. line = int(line)
  541. tko = TokenObject(token)
  542. response.lang = tko.lang
  543. if tko.code == 0:
  544. userID = tko.userID
  545. dvqs = Device_Info.objects.filter(userID_id=userID)
  546. if NickName:
  547. dvqs.filter(NickName__icontains=NickName)
  548. # count = dvqs.count()
  549. dvql = dvqs[(page - 1) * line:page * line].values('id', 'userID', 'NickName', 'UID', 'View_Account',
  550. 'View_Password', 'ChannelIndex', 'Type', 'isShare',
  551. 'primaryUserID', 'primaryMaster', 'data_joined', 'version',
  552. 'isVod', 'isExist', 'NotificationMode')
  553. dvls = CommonService.qs_to_list(dvql)
  554. uid_list = []
  555. for dvl in dvls:
  556. if dvl['isShare'] is False:
  557. uid_list.append(dvl['UID'])
  558. ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
  559. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  560. upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
  561. # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  562. # uidPreview_bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
  563. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  564. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  565. nowTime = int(time.time())
  566. data = []
  567. # 设备拓展信息表
  568. us_qs = UidSetModel.objects.filter(uid__in=uid_list).values('uid', 'version')
  569. uv_dict = {}
  570. for us in us_qs:
  571. uv_dict[us['uid']] = us['version']
  572. for p in dvls:
  573. p['vod'] = []
  574. for dm in ubqs:
  575. if p['UID'] == dm['uid']:
  576. if dm['endTime'] > nowTime:
  577. p['vod'].append(dm)
  578. p['preview'] = []
  579. for up in upqs:
  580. if p['UID'] == up['uid']:
  581. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=up['uid'], channel=up['channel'])
  582. img_sign = bucket.sign_url('GET', obj, 300)
  583. p['preview'].append(img_sign)
  584. p['uid_version'] = uv_dict[p['UID']] if p['UID'] in uv_dict else ''
  585. data.append(p)
  586. return response.json(0, data)
  587. else:
  588. return response.json(tko.code)
  589. def uid_status(request):
  590. request.encoding = 'utf-8'
  591. response = ResponseObject()
  592. if request.method == 'POST':
  593. request_dict = request.POST
  594. elif request.method == 'GET':
  595. request_dict = request.GET
  596. else:
  597. return response.json(444)
  598. token = request_dict.get('token', None)
  599. uid = request_dict.get('uid', None)
  600. tko = TokenObject(token)
  601. response.lang = tko.lang
  602. if tko.code != 0:
  603. return response.json(tko.code)
  604. qs = UidSetModel.objects.filter(uid=uid).values('uid', 'detect_status', 'detect_interval', 'version', 'ucode','p2p_region')
  605. # 判断uid配置表信息是否存在
  606. if qs.exists():
  607. data = {
  608. 'push_status': qs[0]['detect_status'], # 推送状态
  609. 'push_interval': qs[0]['detect_interval'], # 推送间隔
  610. 'ucode': qs[0]['ucode'],
  611. 'version': qs[0]['version'],
  612. 'p2p_region':qs[0]['p2p_region']
  613. }
  614. # 查询云存储相关信息
  615. ubqs = UID_Bucket.objects.filter(uid=uid). \
  616. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  617. nowTime = int(time.time())
  618. if ubqs.exists():
  619. if ubqs[0]['endTime'] > nowTime:
  620. data['vod'] = list(ubqs)
  621. return response.json(0, data)
  622. else:
  623. return response.json(0)
  624. def update_uid_set(request):
  625. request.encoding = 'utf-8'
  626. response = ResponseObject()
  627. if request.method == 'POST':
  628. request_dict = request.POST
  629. elif request.method == 'GET':
  630. request_dict = request.GET
  631. else:
  632. return response.json(444)
  633. token = request_dict.get('token', None)
  634. uid = request_dict.get('uid', None)
  635. version = request_dict.get('version', '')
  636. ucode = request_dict.get('ucode', '')
  637. tko = TokenObject(token)
  638. response.lang = tko.lang
  639. if tko.code == 0:
  640. userID = tko.userID
  641. nowTime = int(time.time())
  642. dvqs = Device_Info.objects.filter(userID_id=userID)
  643. if dvqs.exists():
  644. us_qs = UidSetModel.objects.filter(uid=uid)
  645. if us_qs.exists():
  646. uid_set_update_dict = {
  647. 'updTime': nowTime,
  648. 'version': version,
  649. 'ucode': ucode,
  650. }
  651. us_qs.update(**uid_set_update_dict)
  652. else:
  653. uid_set_create_dict = {
  654. 'uid': uid,
  655. 'addTime': nowTime,
  656. 'updTime': nowTime,
  657. 'version': version,
  658. 'ucode': ucode,
  659. }
  660. UidSetModel.objects.create(**uid_set_create_dict)
  661. return response.json(0)
  662. else:
  663. return response.json(14)
  664. else:
  665. return response.json(tko.code)
  666. # 设备影子更新
  667. def update_device_shadow(request):
  668. request.encoding = 'utf-8'
  669. response = ResponseObject()
  670. if request.method == 'POST':
  671. request_dict = request.POST
  672. elif request.method == 'GET':
  673. request_dict = request.GET
  674. else:
  675. return response.json(444)
  676. etk = request_dict.get('etk', None)
  677. eto = ETkObject(etk)
  678. uid = eto.uid
  679. if uid:
  680. ucode = request_dict.get('ucode', None)
  681. version = request_dict.get('version', None)
  682. p2p_region = request_dict.get('p2p_region', None)
  683. us_qs = UidSetModel.objects.filter(uid=uid)
  684. # 更新
  685. nowTime = int(time.time())
  686. if us_qs.exists():
  687. update_dict = {'updTime':nowTime}
  688. if p2p_region:
  689. update_dict['p2p_region'] = p2p_region
  690. if ucode:
  691. update_dict['ucode'] = ucode
  692. if version:
  693. update_dict['version'] = version
  694. us_qs.update(**update_dict)
  695. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
  696. # 新增
  697. else:
  698. create_dict = {
  699. 'uid': uid,
  700. 'addTime': nowTime,
  701. 'updTime': nowTime,
  702. }
  703. if p2p_region:
  704. create_dict['p2p_region'] = p2p_region
  705. if ucode:
  706. create_dict['ucode'] = ucode
  707. if version:
  708. create_dict['version'] = version
  709. UidSetModel.objects.create(**create_dict)
  710. return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
  711. else:
  712. return JsonResponse(status=200, data={'code': 403, 'msg': 'error etk'})