EquipmentManager.py 13 KB

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