EquipmentManager.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  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(104)
  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. res.append(p)
  42. return response.json(0, {'datas':res})
  43. @csrf_exempt
  44. def addNewUserEquipmentInterface(request):
  45. request.encoding = 'utf-8'
  46. response = ResponseObject()
  47. if request.method == 'POST':
  48. request_dict = request.POST
  49. elif request.method == 'GET':
  50. request_dict = request.GET
  51. else:
  52. return response.json(444)
  53. token = request_dict.get('token', None)
  54. deviceContent = request_dict.get('content', None)
  55. if not deviceContent:
  56. return response.json(444, 'content')
  57. tko = TokenObject(token)
  58. response.lang = tko.lang
  59. if tko.code != 0:
  60. return response.json(tko.code)
  61. userID = tko.userID
  62. userIDValid = Device_User.objects.filter(userID=userID)
  63. if userIDValid:
  64. try:
  65. try:
  66. deviceData = json.loads(deviceContent)
  67. except Exception as e:
  68. return response.json(444, repr(e))
  69. else:
  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. is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
  81. # 判断是否有已绑定用户
  82. if not is_bind.exists():
  83. userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
  84. **deviceData)
  85. userDevice.save()
  86. else:
  87. # 分享添加
  88. if 'isShare' in deviceData:
  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. else:
  107. return response.json(104)
  108. @csrf_exempt
  109. def delUserEquipmentInterface(request):
  110. '''
  111. 删除用户设备
  112. :param request:
  113. :return:
  114. '''
  115. response = ResponseObject()
  116. request.encoding = 'utf-8'
  117. if request.method == 'POST':
  118. request_dict = request.POST
  119. elif request.method == 'GET':
  120. request_dict = request.GET
  121. else:
  122. return response.json(444)
  123. token = request_dict.get('token', None)
  124. id = request_dict.get('id', None)
  125. if not id:
  126. return response.json(444, 'id')
  127. tko = TokenObject(token)
  128. response.lang = tko.lang
  129. if tko.code != 0:
  130. return response.json(tko.code)
  131. userID = tko.userID
  132. # 主用户删除设备全部删除
  133. try:
  134. Device_Info.objects.filter(userID_id=userID, id=id).delete()
  135. except Exception as e:
  136. errorInfo = traceback.format_exc()
  137. print('删除数据库记录错误: %s' % errorInfo)
  138. return response.json(176, repr(e))
  139. else:
  140. return response.json(0)
  141. @csrf_exempt
  142. def deleteInterface(request):
  143. '''
  144. 删除用户设备
  145. :param request:
  146. :return:
  147. '''
  148. response = ResponseObject()
  149. request.encoding = 'utf-8'
  150. if request.method == 'POST':
  151. request_dict = request.POST
  152. elif request.method == 'GET':
  153. request_dict = request.GET
  154. else:
  155. return response.json(444)
  156. token = request_dict.get('token', None)
  157. id = request_dict.get('id', None)
  158. if not id:
  159. return response.json(444, 'id')
  160. tko = TokenObject(token)
  161. response.lang = tko.lang
  162. if tko.code != 0:
  163. return response.json(tko.code)
  164. userID = tko.userID
  165. # 主用户删除设备全部删除
  166. try:
  167. dv_qs = Device_Info.objects.filter(userID_id=userID, id=id)
  168. uid = dv_qs[0].UID
  169. if dv_qs[0].isShare:
  170. dv_qs.delete()
  171. else:
  172. # 主用户删除设备
  173. dv_qs.delete()
  174. # 分享获得用户假删除
  175. ud_dv_qs = Device_Info.objects.filter(UID=uid)
  176. if ud_dv_qs.exists():
  177. ud_dv_qs.update(isExist=0)
  178. except Exception as e:
  179. errorInfo = traceback.format_exc()
  180. print('删除数据库记录错误: %s' % errorInfo)
  181. return response.json(176, repr(e))
  182. else:
  183. return response.json(0)
  184. @csrf_exempt
  185. def modifyUserEquipmentInterface(request):
  186. '''
  187. 修改用户设备
  188. :param request:
  189. :return:
  190. '''
  191. response = ResponseObject()
  192. if request.method == 'POST':
  193. request.encoding = 'utf-8'
  194. request_dict = request.POST
  195. elif request.method == 'GET':
  196. request.encoding = 'utf-8'
  197. request_dict = request.GET
  198. else:
  199. return response.json(444)
  200. token = request_dict.get('token', None)
  201. deviceContent = request_dict.get('content', None)
  202. id = request_dict.get('id', None)
  203. if not deviceContent or not id:
  204. return response.json(444, 'content,id')
  205. tko = TokenObject(token)
  206. response.lang = tko.lang
  207. if tko.code != 0:
  208. return response.json(tko.code)
  209. userID = tko.userID
  210. if userID is None:
  211. return response.json(309)
  212. try:
  213. deviceData = json.loads(deviceContent)
  214. Device_Info.objects.filter(userID_id=userID, id=id).update(**deviceData)
  215. except Exception as e:
  216. return response.json(177, repr(e))
  217. else:
  218. qs = Device_Info.objects.filter(userID_id=userID, id=id)
  219. res = CommonService.qs_to_dict(qs)
  220. return response.json(0, res)
  221. @csrf_exempt
  222. def showAllUserEquipmentInterface(request, *callback_args, **callback_kwargs):
  223. request.encoding = 'utf-8'
  224. response = ResponseObject()
  225. if request.method == 'POST':
  226. fieldDict = request.POST
  227. elif request.method == 'GET':
  228. fieldDict = request.GET
  229. else:
  230. return response.json(444)
  231. token = request.POST.get('token', None)
  232. type = request.POST.get('type', None)
  233. tko = TokenObject(token)
  234. response.lang = tko.lang
  235. if tko.code != 0:
  236. return response.json(tko.code)
  237. userID = tko.userID
  238. if not userID:
  239. return response.json(104)
  240. own_perm = ModelService.check_perm(userID=userID, permID=30)
  241. if not own_perm:
  242. return response.json(404)
  243. if type == 'PC':
  244. page = int(fieldDict['page'])
  245. line = int(fieldDict['line'])
  246. qs = Device_Info.objects.all()
  247. count = qs.count()
  248. res = qs[(page - 1) * line:page * line]
  249. sqlDict = CommonService.qs_to_dict(query_set=res)
  250. sqlDict['count'] = count
  251. return response.json(0, sqlDict)
  252. else:
  253. qs = Device_Info.objects.all()
  254. res = CommonService.qs_to_dict(qs)
  255. return response.json(0, res)
  256. @csrf_exempt
  257. def findEquipmentInfoInterface(request, *callback_args, **callback_kwargs):
  258. request.encoding = 'utf-8'
  259. response = ResponseObject()
  260. if request.method == 'GET':
  261. fieldDict = request.GET
  262. elif request.method == 'POST':
  263. fieldDict = request.POST
  264. else:
  265. return response.json(444)
  266. deviceContent = fieldDict.get('content', None)
  267. token = fieldDict.get('token', None)
  268. tko = TokenObject(token)
  269. response.lang = tko.lang
  270. if tko.code != 0:
  271. return response.json(tko.code)
  272. if deviceContent:
  273. try:
  274. searchCondition = json.loads(deviceContent)
  275. except Exception as e:
  276. print(repr(e))
  277. return response.json(10, repr(e))
  278. else:
  279. kwargs = CommonService.get_kwargs(data=searchCondition)
  280. qs = Device_Info.objects.filter(**kwargs)
  281. page = int(fieldDict['page'])
  282. line = int(fieldDict['line'])
  283. count = qs.count()
  284. res = qs[(page - 1) * line:page * line]
  285. send_dict = CommonService.qs_to_dict(query_set=res)
  286. for k, v in enumerate(send_dict["datas"]):
  287. for val in res:
  288. if v['pk'] == val.id:
  289. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  290. send_dict["datas"][k]['fields']['username'] = username
  291. primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  292. send_dict["datas"][k]['fields']['primaryusername'] = primary
  293. send_dict['count'] = count
  294. return response.json(0, send_dict)
  295. else:
  296. qs = Device_Info.objects.all()
  297. page = int(fieldDict['page'])
  298. line = int(fieldDict['line'])
  299. count = qs.count()
  300. res = qs[(page - 1) * line:page * line]
  301. send_dict = CommonService.qs_to_dict(query_set=res)
  302. for k, v in enumerate(send_dict["datas"]):
  303. for val in res:
  304. if v['pk'] == val.id:
  305. username = ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  306. send_dict["datas"][k]['fields']['username'] = username
  307. primary = ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  308. send_dict["datas"][k]['fields']['primaryusername'] = primary
  309. send_dict['count'] = count
  310. return response.json(0, send_dict)