EquipmentManager.py 13 KB

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