EquipmentManager.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. import re
  2. import time
  3. import traceback
  4. import simplejson as json
  5. from Model.models import Device_Info, UID_Bucket
  6. from Object.ResponseObject import ResponseObject
  7. from Object.TokenObject import TokenObject
  8. from Service.CommonService import CommonService
  9. from Service.ModelService import ModelService
  10. # 查询用户设备
  11. def queryUserEquipmentInterface(request):
  12. request.encoding = 'utf-8'
  13. response = ResponseObject()
  14. if request.method == 'POST':
  15. request_dict = request.POST
  16. elif request.method == 'GET':
  17. request_dict = request.GET
  18. else:
  19. return response.json(444)
  20. token = request_dict.get('token', None)
  21. tko = TokenObject(token)
  22. response.lang = tko.lang
  23. if tko.code != 0:
  24. return response.json(tko.code)
  25. userID = tko.userID
  26. if not userID:
  27. return response.json(309)
  28. dvqs = Device_Info.objects.filter(userID_id=userID)
  29. dvdict = CommonService.qs_to_dict(dvqs)
  30. uid_list = Device_Info.objects.filter(userID_id=userID, isShare=False). \
  31. values_list('UID', flat=True)
  32. ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
  33. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  34. res = []
  35. nowTime = int(time.time())
  36. for p in dvdict['datas']:
  37. p['fields']['vod'] = []
  38. for dm in ubqs:
  39. if p['fields']['UID'] == dm['uid']:
  40. if dm['endTime'] > nowTime:
  41. p['fields']['vod'].append(dm)
  42. # dm['valid'] = 1
  43. # else:
  44. # dm['valid'] = 0
  45. # p['fields']['primaryUserID'] = ''
  46. res.append(p)
  47. return response.json(0, {'datas': res})
  48. def addNewUserEquipmentInterface(request):
  49. request.encoding = 'utf-8'
  50. response = ResponseObject()
  51. if request.method == 'POST':
  52. request_dict = request.POST
  53. elif request.method == 'GET':
  54. request_dict = request.GET
  55. else:
  56. return response.json(444)
  57. token = request_dict.get('token', None)
  58. deviceContent = request_dict.get('content', None)
  59. if not deviceContent:
  60. return response.json(444, 'content')
  61. tko = TokenObject(token)
  62. response.lang = tko.lang
  63. if tko.code != 0:
  64. return response.json(tko.code)
  65. userID = tko.userID
  66. try:
  67. deviceData = json.loads(deviceContent)
  68. UID = deviceData.get('UID', None)
  69. if not UID:
  70. return response.json(444, 'content')
  71. dValid = Device_Info.objects.filter(userID_id=userID, UID=UID)
  72. if dValid:
  73. return response.json(174)
  74. else:
  75. UID = deviceData.get('UID', '')
  76. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  77. if re_uid.match(UID):
  78. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  79. **deviceData)
  80. userDevice.save()
  81. # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  82. # # 判断是否有已绑定用户
  83. # if not is_bind.exists():
  84. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  85. # **deviceData)
  86. # userDevice.save()
  87. # else:
  88. # # 分享添加
  89. # if 'isShare' in deviceData:
  90. # deviceData['isShare'] = True
  91. # else:
  92. # deviceData['isShare'] = True
  93. # bind_userID = is_bind[0].userID_id
  94. # userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
  95. # userID_id=userID,
  96. # primaryUserID=bind_userID,
  97. # primaryMaster=ModelService.get_user_name(bind_userID),
  98. # **deviceData)
  99. # userDevice.save()
  100. else:
  101. return response.json(444, 'UID')
  102. except Exception as e:
  103. errorInfo = traceback.format_exc()
  104. print('添加设备错误: %s ' % errorInfo)
  105. return response.json(178, repr(e))
  106. else:
  107. sqlDict = CommonService.qs_to_dict([userDevice])
  108. return response.json(0, sqlDict)
  109. def addInterface(request):
  110. request.encoding = 'utf-8'
  111. response = ResponseObject()
  112. if request.method == 'POST':
  113. request_dict = request.POST
  114. elif request.method == 'GET':
  115. request_dict = request.GET
  116. else:
  117. return response.json(444)
  118. token = request_dict.get('token', None)
  119. deviceContent = request_dict.get('content', None)
  120. if not deviceContent:
  121. return response.json(444, 'content')
  122. tko = TokenObject(token)
  123. response.lang = tko.lang
  124. if tko.code != 0:
  125. return response.json(tko.code)
  126. userID = tko.userID
  127. try:
  128. deviceData = json.loads(deviceContent)
  129. UID = deviceData.get('UID', None)
  130. if not UID:
  131. return response.json(444, 'content')
  132. dValid = Device_Info.objects.filter(userID=userID, UID=UID)
  133. if dValid:
  134. return response.json(174)
  135. else:
  136. UID = deviceData.get('UID', '')
  137. re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
  138. if re_uid.match(UID):
  139. is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  140. # 判断是否有已绑定用户
  141. if not is_bind.exists():
  142. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  143. **deviceData)
  144. userDevice.save()
  145. else:
  146. return response.json()
  147. else:
  148. return response.json(444, 'UID')
  149. except Exception as e:
  150. errorInfo = traceback.format_exc()
  151. print('添加设备错误: %s ' % errorInfo)
  152. return response.json(178, repr(e))
  153. else:
  154. sqlDict = CommonService.qs_to_dict([userDevice])
  155. return response.json(0, sqlDict)
  156. def delUserEquipmentInterface(request):
  157. '''
  158. 删除用户设备
  159. :param request:
  160. :return:
  161. '''
  162. response = ResponseObject()
  163. request.encoding = 'utf-8'
  164. if request.method == 'POST':
  165. request_dict = request.POST
  166. elif request.method == 'GET':
  167. request_dict = request.GET
  168. else:
  169. return response.json(444)
  170. token = request_dict.get('token', None)
  171. id = request_dict.get('id', None)
  172. if not id:
  173. return response.json(444, 'id')
  174. tko = TokenObject(token)
  175. response.lang = tko.lang
  176. if tko.code != 0:
  177. return response.json(tko.code)
  178. userID = tko.userID
  179. # 主用户删除设备全部删除
  180. try:
  181. Device_Info.objects.filter(userID_id=userID, id=id).delete()
  182. except Exception as e:
  183. errorInfo = traceback.format_exc()
  184. print('删除数据库记录错误: %s' % errorInfo)
  185. return response.json(176, repr(e))
  186. else:
  187. return response.json(0)
  188. def modifyUserEquipmentInterface(request):
  189. '''
  190. 修改用户设备
  191. :param request:
  192. :return:
  193. '''
  194. response = ResponseObject()
  195. if request.method == 'POST':
  196. request.encoding = 'utf-8'
  197. request_dict = request.POST
  198. elif request.method == 'GET':
  199. request.encoding = 'utf-8'
  200. request_dict = request.GET
  201. else:
  202. return response.json(444)
  203. token = request_dict.get('token', None)
  204. deviceContent = request_dict.get('content', None)
  205. id = request_dict.get('id', None)
  206. if not deviceContent or not id:
  207. return response.json(444, 'content,id')
  208. tko = TokenObject(token)
  209. response.lang = tko.lang
  210. if tko.code != 0:
  211. return response.json(tko.code)
  212. userID = tko.userID
  213. if userID is None:
  214. return response.json(309)
  215. try:
  216. deviceData = json.loads(deviceContent)
  217. Device_Info.objects.filter(userID_id=userID, id=id).update(**deviceData)
  218. except Exception as e:
  219. return response.json(177, repr(e))
  220. else:
  221. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  222. res = CommonService.qs_to_dict(qs)
  223. return response.json(0, res)
  224. def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
  225. request.encoding = 'utf-8'
  226. response = ResponseObject()
  227. if request.method == 'POST':
  228. fieldDict = request.POST
  229. elif request.method == 'GET':
  230. fieldDict = request.GET
  231. else:
  232. return response.json(444)
  233. token = request.POST.get('token', None)
  234. type = request.POST.get('type', None)
  235. tko = TokenObject(token)
  236. response.lang = tko.lang
  237. if tko.code != 0:
  238. return response.json(tko.code)
  239. userID = tko.userID
  240. if not userID:
  241. return response.json(309)
  242. own_perm = ModelService.check_perm(userID=userID, permID=30)
  243. if not own_perm:
  244. return response.json(404)
  245. if type == 'PC':
  246. page = int(fieldDict['page'])
  247. line = int(fieldDict['line'])
  248. qs = Device_Info.objects.all()
  249. count = qs.count()
  250. res = qs[(page - 1) * line:page * line]
  251. sqlDict = CommonService.qs_to_dict(query_set=res)
  252. sqlDict['count'] = count
  253. return response.json(0, sqlDict)
  254. else:
  255. qs = Device_Info.objects.all()
  256. res = CommonService.qs_to_dict(qs)
  257. return response.json(0, res)
  258. def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
  259. request.encoding = 'utf-8'
  260. response = ResponseObject()
  261. if request.method == 'GET':
  262. fieldDict = request.GET
  263. elif request.method == 'POST':
  264. fieldDict = request.POST
  265. else:
  266. return response.json(444)
  267. deviceContent = fieldDict.get('content', None)
  268. token = fieldDict.get('token', None)
  269. tko = TokenObject(token)
  270. response.lang = tko.lang
  271. if tko.code != 0:
  272. return response.json(tko.code)
  273. if deviceContent:
  274. try:
  275. searchCondition = json.loads(deviceContent)
  276. except Exception as e:
  277. print(repr(e))
  278. return response.json(10, repr(e))
  279. else:
  280. kwargs = CommonService.get_kwargs(data=searchCondition)
  281. qs = Device_Info.objects.filter(**kwargs)
  282. page = int(fieldDict['page'])
  283. line = int(fieldDict['line'])
  284. count = qs.count()
  285. res = qs[(page - 1) * line:page * line]
  286. send_dict = CommonService.qs_to_dict(query_set=res)
  287. for k, v in enumerate(send_dict["datas"]):
  288. for val in res:
  289. if v['pk'] == val.id:
  290. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  291. send_dict["datas"][k]['fields']['username'] = username
  292. primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  293. send_dict["datas"][k]['fields']['primaryusername'] = primary
  294. send_dict['count'] = count
  295. return response.json(0, send_dict)
  296. else:
  297. qs = Device_Info.objects.all()
  298. page = int(fieldDict['page'])
  299. line = int(fieldDict['line'])
  300. count = qs.count()
  301. res = qs[(page - 1) * line:page * line]
  302. send_dict = CommonService.qs_to_dict(query_set=res)
  303. for k, v in enumerate(send_dict["datas"]):
  304. for val in res:
  305. if v['pk'] == val.id:
  306. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  307. send_dict["datas"][k]['fields']['username'] = username
  308. primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  309. send_dict["datas"][k]['fields']['primaryusername'] = primary
  310. send_dict['count'] = count
  311. return response.json(0, send_dict)
  312. def deleteInterface(request):
  313. '''
  314. 删除用户设备
  315. :param request:
  316. :return:
  317. '''
  318. response = ResponseObject()
  319. request.encoding = 'utf-8'
  320. if request.method == 'POST':
  321. request_dict = request.POST
  322. elif request.method == 'GET':
  323. request_dict = request.GET
  324. else:
  325. return response.json(444)
  326. token = request_dict.get('token', None)
  327. id = request_dict.get('id', None)
  328. if not id:
  329. return response.json(444, 'id')
  330. tko = TokenObject(token)
  331. response.lang = tko.lang
  332. if tko.code != 0:
  333. return response.json(tko.code)
  334. userID = tko.userID
  335. # 主用户删除设备全部删除
  336. if not userID:
  337. return response.json(309)
  338. try:
  339. dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  340. uid = dv_qs[0].UID
  341. if dv_qs[0].isShare:
  342. dv_qs.delete()
  343. else:
  344. # 主用户删除设备
  345. dv_qs.delete()
  346. # 分享获得用户假删除
  347. ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True)
  348. if ud_dv_qs.exists():
  349. ud_dv_qs.update(isExist=0)
  350. except Exception as e:
  351. errorInfo = traceback.format_exc()
  352. print('删除数据库记录错误: %s' % errorInfo)
  353. return response.json(176, repr(e))
  354. else:
  355. return response.json(0)
  356. def queryInterface(request):
  357. request.encoding = 'utf-8'
  358. response = ResponseObject()
  359. if request.method == 'POST':
  360. request_dict = request.POST
  361. elif request.method == 'GET':
  362. request_dict = request.GET
  363. else:
  364. return response.json(444)
  365. token = request_dict.get('token', None)
  366. tko = TokenObject(token)
  367. response.lang = tko.lang
  368. if tko.code == 0:
  369. userID = tko.userID
  370. dvqs = Device_Info.objects.filter(userID_id=userID)
  371. else:
  372. return response.json(tko.code)
  373. ######################
  374. ######################
  375. if not userID:
  376. return response.json(309)
  377. dvqs = Device_Info.objects.filter(userID_id=userID)
  378. dvdict = CommonService.qs_to_dict(dvqs)
  379. uid_list = Device_Info.objects.filter(userID_id=userID, isShare=False). \
  380. values_list('UID', flat=True)
  381. ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
  382. values('bucket__content', 'status', 'channel', 'endTime', 'uid')
  383. res = []
  384. nowTime = int(time.time())
  385. for p in dvdict['datas']:
  386. p['fields']['vod'] = []
  387. for dm in ubqs:
  388. if p['fields']['UID'] == dm['uid']:
  389. if dm['endTime'] > nowTime:
  390. p['fields']['vod'].append(dm)
  391. # dm['valid'] = 1
  392. # else:
  393. # dm['valid'] = 0
  394. # p['fields']['primaryUserID'] = ''
  395. res.append(p)
  396. return response.json(0, {'datas': res})
  397. def queryInterfacexxx(request):
  398. '''
  399. 删除用户设备
  400. :param request:
  401. :return:
  402. '''
  403. response = ResponseObject()
  404. request.encoding = 'utf-8'
  405. if request.method == 'POST':
  406. request_dict = request.POST
  407. elif request.method == 'GET':
  408. request_dict = request.GET
  409. else:
  410. return response.json(444)
  411. token = request_dict.get('token', None)
  412. id = request_dict.get('id', None)
  413. if not id:
  414. return response.json(444, 'id')
  415. tko = TokenObject(token)
  416. response.lang = tko.lang
  417. if tko.code != 0:
  418. return response.json(tko.code)
  419. userID = tko.userID
  420. # 主用户删除设备全部删除
  421. if not userID:
  422. return response.json(309)
  423. try:
  424. dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  425. uid = dv_qs[0].UID
  426. if dv_qs[0].isShare:
  427. dv_qs.delete()
  428. else:
  429. # 主用户删除设备
  430. dv_qs.delete()
  431. # 分享获得用户假删除
  432. ud_dv_qs = Device_Info.objects.filter(UID=uid, isShare=True)
  433. if ud_dv_qs.exists():
  434. ud_dv_qs.update(isExist=0)
  435. except Exception as e:
  436. errorInfo = traceback.format_exc()
  437. print('删除数据库记录错误: %s' % errorInfo)
  438. return response.json(176, repr(e))
  439. else:
  440. return response.json(0)