UserBrandController.py 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD019
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2019/5/9 11:50
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: AliPayObject.py
  12. @Contact: pzb3076@163.com
  13. """
  14. from django.views.generic.base import View
  15. from django.utils.decorators import method_decorator
  16. from django.views.decorators.csrf import csrf_exempt
  17. from Service.ModelService import ModelService
  18. from Model.models import User_Brand,Device_User
  19. from django.utils import timezone
  20. import traceback,time,json,urllib.request
  21. from Object.ResponseObject import ResponseObject
  22. from Object.TokenObject import TokenObject
  23. from Service.CommonService import CommonService
  24. from collections import Counter
  25. from Ansjer.config import DOMAIN_HOST
  26. from Object.RedisObject import RedisObject
  27. '''
  28. http://192.168.136.39:8000/userbrandinfo/queryByAdmin?token=test&page=1&line=10 记录
  29. http://192.168.136.39:8000/userbrandinfo/queryArea?token=test 市的区域统计
  30. http://192.168.136.39:8000/userbrandinfo/queryDeviceSupplier?token=test 品牌统计
  31. http://192.168.136.39:8000/userbrandinfo/queryAllByAdmin?token=test&page=1&line=10 全部记录中每个用户的数据
  32. http://192.168.136.39:8000/userbrandinfo/queryAll?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NTk4OTY4NTd9.nhK3VSghSGjyXKjel4woz7R_3bhjgqQDlX-ypYsklNU&page=1&line=5
  33. '''
  34. # coding:utf-8
  35. from boto3 import Session
  36. from botocore.exceptions import ClientError
  37. from boto3.dynamodb.conditions import Key, Attr
  38. import logging
  39. import json
  40. logger = logging.getLogger(__name__)
  41. class MyserviceDynamodb(object):
  42. def __init__(self, **kwargs):
  43. self.region = 'us-west-1'
  44. self.access_key = 'AKIA2E67UIMD4PZTYKYD'
  45. self.secret_key = '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'
  46. self.session = self.__session()
  47. def __session(self):
  48. try:
  49. session = Session(aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_key,region_name=self.region)
  50. except:
  51. print("Failed to connect session in region{0}".format(self.region))
  52. return session
  53. # 创建user_brand_all表
  54. def user_brand_all_table_create(self, table_name):
  55. dynamodb = self.session.resource('dynamodb')
  56. inventory = my.tables_list(table_name)
  57. if table_name in inventory:
  58. print ('包含')
  59. else:
  60. try:
  61. table = dynamodb.create_table(
  62. TableName=table_name,
  63. KeySchema=[
  64. {
  65. 'AttributeName': 'userID',
  66. 'KeyType': 'HASH'
  67. },
  68. {
  69. 'AttributeName': 'addTime',
  70. 'KeyType': 'RANGE'
  71. }
  72. ],
  73. AttributeDefinitions=[
  74. {
  75. 'AttributeName': 'userID',
  76. 'AttributeType': 'S'
  77. },
  78. {
  79. 'AttributeName': 'addTime',
  80. 'AttributeType': 'N'
  81. },
  82. ],
  83. ProvisionedThroughput={
  84. 'ReadCapacityUnits': 5,
  85. 'WriteCapacityUnits': 5,
  86. }
  87. )
  88. except Exception:
  89. logger.error (table_name + '表已经存在')
  90. # 查询aws数据库里面有什么表
  91. def tables_list(self,table_name):
  92. client = self.session.client('dynamodb')
  93. response = client.list_tables()
  94. return response['TableNames']
  95. # 创建user_brand表
  96. def table_create(self,table_name):
  97. dynamodb = self.session.resource('dynamodb')
  98. inventory = my.tables_list(table_name)
  99. if table_name in inventory:
  100. print ('包含')
  101. else:
  102. try:
  103. table = dynamodb.create_table(
  104. TableName=table_name,
  105. KeySchema=[
  106. {
  107. 'AttributeName': 'userID',
  108. 'KeyType': 'HASH'
  109. },
  110. {
  111. 'AttributeName': 'username',
  112. 'KeyType': 'RANGE'
  113. }
  114. ],
  115. AttributeDefinitions=[
  116. {
  117. 'AttributeName': 'userID',
  118. 'AttributeType': 'S'
  119. },
  120. {
  121. 'AttributeName': 'username',
  122. 'AttributeType': 'S'
  123. },
  124. ],
  125. ProvisionedThroughput={
  126. 'ReadCapacityUnits': 5,
  127. 'WriteCapacityUnits': 5,
  128. }
  129. )
  130. except Exception:
  131. logger.error (table_name+'表已经存在')
  132. # 添加user_brand_all表数据
  133. def user_brand_all_item_put(self, table_name,data_list):
  134. dynamodb = self.session.resource('dynamodb')
  135. table = dynamodb.Table(table_name)
  136. with table.batch_writer() as batch:
  137. for i in data_list:
  138. data = json.loads(i.decode('utf-8'))
  139. # print (json.loads(i))
  140. # data = i
  141. if data['city'] == '':
  142. data['city'] = '无'
  143. if data['area'] == '':
  144. data['area'] = '无'
  145. if data['street'] == '':
  146. data['street'] = '无'
  147. if data['longitude'] == '':
  148. data['longitude'] = '无'
  149. if data['latitude'] == '':
  150. data['latitude'] = '无'
  151. batch.put_item(
  152. Item={
  153. 'userID': data['userID'],
  154. 'addTime': data['addTime'],
  155. 'username': data['username'],
  156. 'deviceSupplier': data['deviceSupplier'],
  157. 'deviceModel': data['deviceModel'],
  158. 'osType': data['osType'],
  159. 'osVersion': data['osVersion'],
  160. 'country' : data['country'],
  161. 'province': data['province'],
  162. 'city': data['city'],
  163. 'area': data['area'],
  164. 'street': data['street'],
  165. 'longitude': data['longitude'],
  166. 'latitude': data['latitude'],
  167. 'appId': data['appId'],
  168. 'status_all': data['status_all'],
  169. 'ExpirationTime_TTL' : data['ExpirationTime_TTL'],
  170. 'ip': data['ip'],
  171. }
  172. )
  173. print ('批量添加数据成功!')
  174. # 添加user_brand表数据
  175. def user_brand_item_put(self, table_name, user_id, username,add_time, device_supplier, device_model, os_type,
  176. os_version, country, province, city, area, street, longitude, latitude, app_id,
  177. status_all, ip):
  178. dynamodb = self.session.resource('dynamodb')
  179. table = dynamodb.Table(table_name)
  180. table.put_item(
  181. Item={
  182. 'userID': user_id,
  183. 'username': username,
  184. 'addTime': add_time,
  185. 'deviceSupplier': device_supplier,
  186. 'deviceModel': device_model,
  187. 'osType': os_type,
  188. 'osVersion': os_version,
  189. 'country': country,
  190. 'province': province,
  191. 'city': city,
  192. 'area': area,
  193. 'street': street,
  194. 'longitude': longitude,
  195. 'latitude': latitude,
  196. 'appId': app_id,
  197. 'ExpirationTime_TTL': add_time + 2592000,
  198. 'status_all': status_all,
  199. 'ip': ip,
  200. }
  201. )
  202. print ('添加表一条数据成功!')
  203. # page分页数,line条数,table_name表名称,last_evaluated查询开始值,page_value记录分页开始值
  204. def get_page_line(self, page, line, table_name, last_evaluated,page_value):
  205. dynamodb = self.session.resource('dynamodb')
  206. if not dynamodb:
  207. raise DynamodbConnectionError("Failed to get resource for dynamodb!")
  208. table = dynamodb.Table(table_name)
  209. last_evaluated_key = last_evaluated
  210. try:
  211. if last_evaluated_key is None:
  212. response = table.scan(
  213. Limit=line,
  214. )
  215. page_value.append(last_evaluated_key)
  216. else:
  217. # 构建分页的起点,传入下一页面的起点,这是由主键来控制的,last_evaluated_key的值就是本表中的uid
  218. response = table.scan(
  219. Limit=line,
  220. ExclusiveStartKey=last_evaluated_key)
  221. try:
  222. last_evaluated_key = response['LastEvaluatedKey']
  223. # 如果有知就追加在该值的后面
  224. page_value.append(last_evaluated_key)
  225. my.get_page_line(page, line, table_name, last_evaluated_key,page_value)
  226. except Exception:
  227. return page_value
  228. except Exception as e:
  229. logger.error("Failed to get table {0}, error".format(table_name, e))
  230. return page_value
  231. def item_get(self,line,table_name,last_evaluated_key):
  232. dynamodb = self.session.resource('dynamodb')
  233. table = dynamodb.Table(table_name)
  234. if last_evaluated_key is None:
  235. response = table.scan(
  236. Limit=line,
  237. )
  238. else:
  239. # 构建分页的起点,传入下一页面的起点,这是由主键来控制的,last_evaluated_key的值就是本表中的uid
  240. response = table.scan(
  241. Limit=line,
  242. ExclusiveStartKey=last_evaluated_key)
  243. return response
  244. def item_get_count(self,table_name):
  245. dynamodb = self.session.resource('dynamodb')
  246. table = dynamodb.Table(table_name)
  247. response = table.scan()
  248. return len(response['Items'])
  249. def item_get_brand(self,table_name):
  250. dynamodb = self.session.resource('dynamodb')
  251. table = dynamodb.Table(table_name)
  252. try:
  253. response = table.scan()
  254. response = response['Items']
  255. return response
  256. except Exception:
  257. logger.error("Failed to put item in to {0}:error{1}".format(table))
  258. def put_item(self, table, item_dict=None):
  259. try:
  260. response = table.put_item(Item=item_dict)
  261. except Exception as e:
  262. logger.error("Failed to put item in to {0}:error{1}".format(table,e))
  263. return response
  264. def get_item(self, table_name,queryname ,username):
  265. dynamodb = self.session.resource('dynamodb')
  266. if not dynamodb:
  267. raise DynamodbConnectionError("Failed to get resource for dynamodb!")
  268. try:
  269. table = dynamodb.Table(table_name)
  270. response = table.scan(
  271. FilterExpression=Attr(queryname).eq(username)
  272. )
  273. items = response['Items']
  274. except Exception as e:
  275. logger.error("Failed to get table {0}, error".format(table_name, e))
  276. return items
  277. def update_table(self, table_name, user_id,username, add_time, deviceSupplier, deviceModel, osType, osVersion, country, province, city, area, street, longitude , latitude,appId, ip,status_all
  278. ):
  279. dynamodb = self.session.resource('dynamodb')
  280. table = dynamodb.Table(table_name)
  281. try:
  282. response = table.update_item(
  283. Key = {
  284. 'userID': user_id,
  285. 'username':username
  286. },UpdateExpression = "SET addTime = :add_time, deviceSupplier= :deviceSupplier, deviceModel = :deviceModel, osType = :osType, osVersion = :osVersion, country = :country, province = :province, city = :city, area= :area, street= :street, longitude= :longitude, latitude= :latitude, appId= :appId, ip= :ip, status_all= :status_all",
  287. ExpressionAttributeValues={
  288. ':add_time': add_time,
  289. ':deviceSupplier': deviceSupplier,
  290. ':deviceModel': deviceModel,
  291. ':osType':osType,
  292. ':osVersion':osVersion,
  293. ':country':country,
  294. ':province':province,
  295. ':city': city,
  296. ':area': area,
  297. ':street': street,
  298. ':longitude': longitude,
  299. ':latitude': latitude,
  300. ':appId': appId,
  301. ':ip': ip,
  302. ':status_all': status_all,
  303. },ReturnValues="UPDATED_NEW")
  304. except ClientError as e:
  305. if e.response['Error']['Code'] == "ConditionalCheckFailedException":
  306. logger.error(e.response['Error']['Message'])
  307. else:
  308. print('Failed update the dynamodb by event_id,not Failed Conditional')
  309. else:
  310. print ('修改成功')
  311. def table_delete(self, table_name):
  312. dynamodb = self.session.resource('dynamodb')
  313. table = dynamodb.Table(table_name)
  314. table.delete()
  315. print ('删除表成功')
  316. def item_delete(self, table_name,user_id,user_name,add_time):
  317. dynamodb = self.session.resource('dynamodb')
  318. table = dynamodb.Table(table_name)
  319. try:
  320. print (str(table_name))
  321. if str(table_name) == str('user_brand'):
  322. table.delete_item(
  323. Key={
  324. 'userID': user_id,
  325. 'username': user_name,
  326. }
  327. )
  328. else:
  329. table.delete_item(
  330. Key={
  331. 'userID': user_id,
  332. 'addTime': int(add_time),
  333. }
  334. )
  335. return 'ok'
  336. except Exception:
  337. logger.error("Failed to put item in to {0}:error{1}".format(table))
  338. return 'no'
  339. my = MyserviceDynamodb()
  340. # print(my.table_delete('user_brand'))
  341. # print(my.table_delete('user_brand_all'))
  342. if DOMAIN_HOST == 'www.dvema.com':
  343. user_brand = 'user_brand'
  344. user_brand_all = 'user_brand_all'
  345. else:
  346. user_brand = 'test_user_brand'
  347. user_brand_all = 'test_user_brand_all'
  348. my.table_create(user_brand)
  349. my.user_brand_all_table_create(user_brand_all)
  350. # print(my.item_put('user_brand'))
  351. # table_value = my.get_table('user_brand')
  352. class UserBrandInfo(View):
  353. @method_decorator(csrf_exempt)
  354. def dispatch(self, *args, **kwargs):
  355. return super(UserBrandInfo, self).dispatch(*args, **kwargs)
  356. def get(self, request, *args, **kwargs):
  357. request.encoding = 'utf-8'
  358. operation = kwargs.get('operation')
  359. return self.validation(request.GET, request, operation)
  360. def post(self, request, *args, **kwargs):
  361. request.encoding = 'utf-8'
  362. operation = kwargs.get('operation')
  363. return self.validation(request.POST, request, operation)
  364. def validation(self, request_dict, request, operation):
  365. if operation is None:
  366. return response.json(444, 'error path')
  367. self.clientIP = CommonService.get_ip_address(request)
  368. response = ResponseObject()
  369. token = request_dict.get('token', None)
  370. if token is not None:
  371. tko = TokenObject(token)
  372. response.lang = tko.lang
  373. if tko.code == 0:
  374. userID = tko.userID
  375. if DOMAIN_HOST == 'www.dvema.com':
  376. user_brand = 'user_brand'
  377. user_brand_all = 'user_brand_all'
  378. else:
  379. user_brand = 'test_user_brand'
  380. user_brand_all = 'test_user_brand_all'
  381. if userID is not None:
  382. if operation == 'queryByAdmin':
  383. return self.query_info(request_dict, userID,user_brand,user_brand_all,response)
  384. elif operation == 'add':
  385. return self.add_info(request_dict, userID,user_brand,user_brand_all,response)
  386. elif operation == 'queryAllByAdmin':
  387. return self.query_all_info(request_dict, userID,user_brand,user_brand_all,response)
  388. elif operation == 'deleteByAdmin':
  389. return self.delete_by_admin(request_dict, userID,user_brand,user_brand_all,response)
  390. elif operation == 'queryDeviceSupplier':
  391. return self.query_deviceSupplier_info(request_dict, userID,user_brand,user_brand_all,response)
  392. elif operation == 'queryArea':
  393. return self.query_area_info(request_dict, userID,user_brand,user_brand_all,response)
  394. else:
  395. return response.json(444)
  396. else:
  397. return response.json(309)
  398. else:
  399. return response.json(tko.code)
  400. else:
  401. return response.json(309)
  402. # 获取外网IP
  403. # http://192.168.136.39:8000/userbrandinfo?operation=add&token=test&deviceSupplier=小米&deviceModel=HM NOTE 1TD&osType=WEB&osVersion=4.0.0
  404. def add_info(self, request_dict, userID,user_brand,user_brand_all,response):
  405. deviceSupplier = request_dict.get('deviceSupplier', None)
  406. deviceModel = request_dict.get('deviceModel', None)
  407. osType = request_dict.get('osType', None)
  408. osVersion = request_dict.get('osVersion', None)
  409. country = request_dict.get('country', None)
  410. province = request_dict.get('province', None)
  411. city = request_dict.get('city', None)
  412. area = request_dict.get('area', None)
  413. street = request_dict.get('street', None)
  414. longitude = request_dict.get('longitude', None)
  415. latitude = request_dict.get('latitude', None)
  416. appId = request_dict.get('appId', None)
  417. if city is None:
  418. city='无'
  419. if area is None:
  420. area='无'
  421. if street is None:
  422. street='无'
  423. if longitude is None:
  424. longitude='无'
  425. if latitude is None:
  426. latitude='无'
  427. param_area = CommonService.get_param_flag(data=[country,province,city])
  428. must_fill_in = CommonService.get_param_flag(data=[appId,deviceSupplier,deviceModel,osType,osVersion])
  429. if must_fill_in is False:
  430. return response.json(444,'appId,deviceSupplier,deviceModel,osType,osVersion')
  431. if param_area is True:
  432. if '省' in province:
  433. province = province.replace('省','')
  434. if '市' in city:
  435. city = city.replace('市','')
  436. status = 1
  437. country = country
  438. province = province
  439. city = city
  440. area = area
  441. street = street
  442. longitude = longitude
  443. latitude = latitude
  444. else:
  445. status = 0
  446. jsonData = CommonService.getIpIpInfo(ip=self.clientIP,lang='CN')
  447. country = jsonData['country_name']
  448. province = jsonData['region_name']
  449. city = jsonData['city_name']
  450. area = '无'
  451. street = '无'
  452. longitude = jsonData['longitude']
  453. latitude = jsonData['latitude']
  454. if country == '局域网':
  455. city = '无'
  456. longitude = '无'
  457. latitude = '无'
  458. param_flag = CommonService.get_param_flag(data=[deviceSupplier, deviceModel,osType,osVersion])
  459. if param_flag is True:
  460. addTime = int(time.time())
  461. print (time.time())
  462. username = Device_User.objects.filter(userID = userID).values('userID','username','NickName')
  463. try:
  464. username = username[0]['username']
  465. except Exception:
  466. username = '无'
  467. add_data = {
  468. 'userID': userID,
  469. 'addTime': addTime,
  470. 'username': username,
  471. 'deviceSupplier': deviceSupplier,
  472. 'deviceModel': deviceModel,
  473. 'osType': osType,
  474. 'osVersion': osVersion,
  475. 'country': country,
  476. 'province': province,
  477. 'city': city,
  478. 'area': area,
  479. 'street': street,
  480. 'longitude': longitude,
  481. 'latitude': latitude,
  482. 'appId': appId,
  483. 'status_all': status,
  484. 'ExpirationTime_TTL': addTime + 2592000,
  485. 'ip': self.clientIP
  486. }
  487. redisObj = RedisObject()
  488. add_user_brand_all_data = json.dumps(add_data)
  489. if DOMAIN_HOST == 'www.dvema.com':
  490. logKey = 'user_brand_all'
  491. else:
  492. logKey = 'test_user_brand_all'
  493. redisObj.rpush(name=logKey, val=add_user_brand_all_data)
  494. print (redisObj.llen(name=logKey))
  495. # 判断redis列表长度
  496. if redisObj.llen(name=logKey) > 1:
  497. data_list = redisObj.lrange(logKey, 0, -1)
  498. redisObj.del_data(key=logKey)
  499. # 添加user_brand_all表信息
  500. my.user_brand_all_item_put(user_brand_all, data_list)
  501. # 添加user_brand表信息
  502. my.user_brand_item_put(user_brand, userID, username, addTime, deviceSupplier, deviceModel,
  503. osType, osVersion,
  504. country, province, city, area, street, longitude, latitude, appId, status,
  505. self.clientIP)
  506. return response.json(0,{'OK':int(time.time())})
  507. else:
  508. # 参数错误
  509. return response.json(444)
  510. # 查询每个用户的最新登录数据表
  511. def query_info(self, request_dict, userID,user_brand,user_brand_all,response):
  512. page = int(request_dict.get('page', None))
  513. line = int(request_dict.get('line', None))
  514. username = request_dict.get('username',None)
  515. param_flag = CommonService.get_param_flag(data=[page, line])
  516. if param_flag is True:
  517. check_perm = ModelService.check_perm(userID=userID,permID=30)
  518. page_value=[]
  519. if check_perm is True:
  520. if username is None or username is '':
  521. table_Limit_value = my.get_page_line(page,line,user_brand,None,page_value)
  522. # 页面减1
  523. page = page-1
  524. if page < len(table_Limit_value):
  525. # 分页后查询
  526. table_value = my.item_get(line,user_brand,table_Limit_value[page])
  527. table_value = table_value['Items']
  528. count = my.item_get_count(user_brand)
  529. return response.json(0, {'datas': table_value, 'count': count})
  530. else:
  531. # 查询
  532. table_value = my.get_item(user_brand, 'username' ,username)
  533. return response.json(0, {'datas': table_value, 'count': len(table_value)})
  534. else:
  535. return response.json(404)
  536. else:
  537. return response.json(444)
  538. # 删除接口
  539. def delete_by_admin(self, request_dict, userID,user_brand,user_brand_all,response):
  540. id = request_dict.getlist('id', None)
  541. username = request_dict.getlist('username', None)
  542. add_time = request_dict.getlist('add_time', None)
  543. table_name = request_dict.getlist('table_name', None)
  544. param_flag = CommonService.get_param_flag(data=[id,username])
  545. print (table_name[0])
  546. if param_flag is True:
  547. check_perm = ModelService.check_perm(userID=userID, permID=10)
  548. if check_perm is True:
  549. if str(table_name[0])==str(user_brand):
  550. is_delete = my.item_delete(user_brand, id[0],username[0], add_time[0])
  551. else:
  552. is_delete = my.item_delete(user_brand_all, id[0],add_time[0], add_time[0])
  553. return response.json(0, {'delete_count': is_delete[0]})
  554. else:
  555. return response.json(404)
  556. else:
  557. return response.json(444)
  558. # Query each user record statistics
  559. def query_all_info(self, request_dict, userID,user_brand,user_brand_all,response):
  560. page = int(request_dict.get('page', None))
  561. line = int(request_dict.get('line', None))
  562. username = request_dict.get('username', None)
  563. param_flag = CommonService.get_param_flag(data=[page, line])
  564. if param_flag is True:
  565. check_perm = ModelService.check_perm(userID=userID,permID=30)
  566. page_value = []
  567. if check_perm is True:
  568. if username is None or username is '':
  569. table_Limit_value = my.get_page_line(page, line, user_brand_all, None, page_value)
  570. page = page - 1
  571. if page < len(table_Limit_value):
  572. table_value = my.item_get(line, user_brand_all, table_Limit_value[page])
  573. table_value = table_value['Items']
  574. count = my.item_get_count(user_brand_all)
  575. return response.json(0, {'datas': table_value, 'count': count})
  576. else:
  577. # 查询
  578. table_value = my.get_item(user_brand_all, 'username', username)
  579. return response.json(0, {'datas': table_value, 'count': len(table_value)})
  580. else:
  581. return response.json(404)
  582. else:
  583. return response.json(444)
  584. # Brand statistics interface
  585. def query_deviceSupplier_info(self, request_dict, userID,user_brand,user_brand_all,response):
  586. check_perm = ModelService.check_perm(userID=userID,permID=30)
  587. if check_perm is True:
  588. table_value = my.item_get_brand(user_brand)
  589. send_jsons = []
  590. counts = 0
  591. for i in table_value:
  592. send_jsons.append(table_value[counts]['deviceSupplier'])
  593. counts = counts + 1
  594. send_jsons = Counter(send_jsons)
  595. return response.json(0, {'datas': send_jsons,'counts':counts})
  596. else:
  597. return response.json(404)
  598. # Interface to area statistics
  599. def query_area_info(self, request_dict, userID,user_brand,user_brand_all,response):
  600. check_perm = ModelService.check_perm(userID=userID,permID=30)
  601. district = request_dict.get('district', None)
  602. if check_perm is True:
  603. # 按照用户去重复查询
  604. table_value = my.item_get_brand(user_brand)
  605. send_jsons = []
  606. counts = 0
  607. for i in table_value:
  608. send_jsons.append(table_value[counts][district])
  609. counts = counts + 1
  610. send_jsons = Counter(send_jsons)
  611. return response.json(0, {'datas': send_jsons, 'counts': counts})
  612. else:
  613. return response.json(404)