EquipmentManager.py 13 KB

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