ServeManagementController.py 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import hashlib
  4. import json
  5. import time
  6. import urllib
  7. import uuid
  8. import boto3
  9. import threading
  10. import logging
  11. from boto3.session import Session
  12. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse, StreamingHttpResponse
  13. from django.views.generic.base import View
  14. from Model.models import Device_Info, Role, MenuModel, VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
  15. UID_Bucket, ExperienceContextModel, Lang, Device_User, CloudLogModel
  16. from Object.ResponseObject import ResponseObject
  17. from Object.TokenObject import TokenObject
  18. from Object.UidTokenObject import UidTokenObject
  19. from Service.CommonService import CommonService
  20. from django.db.models import Q, F
  21. from time import strftime
  22. class serveManagement(View):
  23. def get(self, request, *args, **kwargs):
  24. request.encoding = 'utf-8'
  25. operation = kwargs.get('operation')
  26. return self.validation(request.GET, request, operation)
  27. def post(self, request, *args, **kwargs):
  28. request.encoding = 'utf-8'
  29. operation = kwargs.get('operation')
  30. return self.validation(request.POST, request, operation)
  31. def validation(self, request_dict, request, operation):
  32. language = request_dict.get('language', 'en')
  33. response = ResponseObject(language, 'pc')
  34. if operation == 'getCloudUserList':
  35. return self.getCloudUserList(request_dict, response)
  36. return 0
  37. else:
  38. tko = TokenObject(
  39. request.META.get('HTTP_AUTHORIZATION'),
  40. returntpye='pc')
  41. if tko.code != 0:
  42. return response.json(tko.code)
  43. response.lang = tko.lang
  44. userID = tko.userID
  45. if operation == 'getVodBucketList':
  46. return self.getVodBucketList(userID, request_dict, response)
  47. elif operation == 'addOrEditVodBucket':
  48. return self.addOrEditVodBucket(userID, request_dict, response)
  49. elif operation == 'deleteVodBucket':
  50. return self.deleteVodBucket(userID, request_dict, response)
  51. elif operation == 'getStoreMealList':
  52. return self.getStoreMealList(userID, request_dict, response)
  53. elif operation == 'addOrEditStoreMeal':
  54. return self.addOrEditStoreMeal(userID, request_dict, response)
  55. elif operation == 'deleteStoreMeal':
  56. return self.deleteStoreMeal(userID, request_dict, response)
  57. elif operation == 'getStoreMealLanguage':
  58. return self.getStoreMealLanguage(
  59. userID, request_dict, response)
  60. elif operation == 'addOrEditStoreMealLanguage':
  61. return self.addOrEditStoreMealLanguage(
  62. userID, request_dict, response)
  63. elif operation == 'deleteStoreMealLanguage':
  64. return self.deleteStoreMealLanguage(
  65. userID, request_dict, response)
  66. elif operation == 'getCdkList':
  67. return self.getCdkList(userID, request_dict, response)
  68. elif operation == 'createCdk':
  69. return self.createCdk(request_dict, response)
  70. elif operation == 'deleteCdk':
  71. return self.deleteCdk(request_dict, response)
  72. elif operation == 'downloadCDK':
  73. return self.downloadCDK(request_dict, response)
  74. elif operation == 'getDeviceOrderList':
  75. return self.getDeviceOrderList(request_dict, response)
  76. elif operation == 'deleteDeviceOrder':
  77. return self.deleteDeviceOrder(userID, request_dict, response)
  78. elif operation == 'getDevicePackageList':
  79. return self.getDevicePackageList(request_dict, response)
  80. elif operation == 'deleteDevicePackage':
  81. return self.deleteDevicePackage(userID, request_dict, response)
  82. elif operation == 'experiencereset': # 重置设备云存体验
  83. return self.do_experience_reset(request_dict, userID, response)
  84. elif operation == 'getCloudUserList': # 重置设备云存体验
  85. return self.getCloudUserList(request_dict, userID, response)
  86. else:
  87. return response.json(404)
  88. def getVodBucketList(self, userID, request_dict, response):
  89. # 查询存储桶数据
  90. print('request_dict: ', request_dict)
  91. isSelect = request_dict.get('isSelect', None)
  92. if isSelect:
  93. # 获取全部数据作为存储桶选项
  94. vod_bucket_qs = VodBucketModel.objects.all().values('id', 'bucket')
  95. return response.json(
  96. 0, {'list': CommonService.qs_to_list(vod_bucket_qs)})
  97. bucket = request_dict.get('bucket', None)
  98. mold = request_dict.get('mold', None)
  99. is_free = request_dict.get('is_free', None)
  100. pageNo = request_dict.get('pageNo', None)
  101. pageSize = request_dict.get('pageSize', None)
  102. if not all([pageNo, pageSize]):
  103. return response.json(444)
  104. page = int(pageNo)
  105. line = int(pageSize)
  106. try:
  107. if bucket or mold or is_free: # 条件查询
  108. if bucket:
  109. vod_bucket_qs = VodBucketModel.objects.filter(
  110. bucket=bucket)
  111. elif mold:
  112. vod_bucket_qs = VodBucketModel.objects.filter(
  113. mold=int(mold))
  114. elif is_free:
  115. vod_bucket_qs = VodBucketModel.objects.filter(
  116. is_free=int(is_free))
  117. else: # 查询全部
  118. vod_bucket_qs = VodBucketModel.objects.filter().all()
  119. total = len(vod_bucket_qs)
  120. vod_buckets = vod_bucket_qs[(page - 1) * line:page * line]
  121. vod_bucket_list = []
  122. for vod_bucket in vod_buckets:
  123. vod_bucket_list.append({
  124. 'bucketID': vod_bucket.id,
  125. 'bucket': vod_bucket.bucket,
  126. 'content': vod_bucket.content,
  127. 'mold': vod_bucket.mold,
  128. 'area': vod_bucket.area,
  129. 'region': vod_bucket.region,
  130. 'endpoint': vod_bucket.endpoint,
  131. 'is_free': vod_bucket.is_free,
  132. 'storeDay': vod_bucket.storeDay,
  133. 'region_id': vod_bucket.region_id,
  134. 'addTime': time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(vod_bucket.addTime)),
  135. 'updTime': time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(vod_bucket.updTime)),
  136. })
  137. print('vod_bucket_list: ', vod_bucket_list)
  138. return response.json(
  139. 0, {'list': vod_bucket_list, 'total': total})
  140. except Exception as e:
  141. print(e)
  142. return response.json(500, repr(e))
  143. def addOrEditVodBucket(self, userID, request_dict, response):
  144. # 添加/编辑存储桶
  145. print('request_dict: ', request_dict)
  146. bucketID = request_dict.get('bucketID', None)
  147. bucket = request_dict.get('bucket', '').strip() # 移除字符串头尾的空格
  148. content = request_dict.get('content', '').strip()
  149. mold = int(request_dict.get('mold', 1))
  150. area = request_dict.get('area', '').strip()
  151. region = request_dict.get('region', '').strip()
  152. endpoint = request_dict.get('endpoint', '').strip()
  153. is_free = int(request_dict.get('is_free', 0))
  154. storeDay = int(request_dict.get('storeDay', 0))
  155. region_id = int(request_dict.get('region_id', 1))
  156. isEdit = request_dict.get('isEdit', None)
  157. if not all([bucket, content, area, region, endpoint]):
  158. return response.json(444)
  159. try:
  160. now_time = int(time.time())
  161. vod_bucket_data = {
  162. 'bucket': bucket,
  163. 'content': content,
  164. 'mold': mold,
  165. 'area': area,
  166. 'region': region,
  167. 'endpoint': endpoint,
  168. 'is_free': is_free,
  169. 'storeDay': storeDay,
  170. 'region_id': region_id,
  171. }
  172. if isEdit:
  173. if not bucketID:
  174. return response.json(444)
  175. vod_bucket_data['updTime'] = now_time
  176. VodBucketModel.objects.filter(
  177. id=bucketID).update(
  178. **vod_bucket_data)
  179. else:
  180. vod_bucket_data['addTime'] = now_time
  181. VodBucketModel.objects.create(**vod_bucket_data)
  182. return response.json(0)
  183. except Exception as e:
  184. print(e)
  185. return response.json(500, repr(e))
  186. def deleteVodBucket(self, userID, request_dict, response):
  187. # 删除存储桶
  188. print('request_dict: ', request_dict)
  189. bucketID = request_dict.get('bucketID', None)
  190. if not bucketID:
  191. return response.json(444)
  192. try:
  193. VodBucketModel.objects.filter(id=bucketID).delete()
  194. return response.json(0)
  195. except Exception as e:
  196. print(e)
  197. return response.json(500, repr(e))
  198. def getStoreMealList(self, userID, request_dict, response):
  199. # 获取云存套餐信息数据
  200. print('request_dict: ', request_dict)
  201. isSelect = request_dict.get('isSelect', None)
  202. if isSelect:
  203. # 获取套餐ID作为选项
  204. store_meal_qs = Store_Meal.objects.all().values('id', 'bucket__bucket')
  205. return response.json(
  206. 0, {'list': CommonService.qs_to_list(store_meal_qs)})
  207. bucket = request_dict.get('bucket', None)
  208. pageNo = request_dict.get('pageNo', None)
  209. pageSize = request_dict.get('pageSize', None)
  210. if not all([pageNo, pageSize]):
  211. return response.json(444)
  212. page = int(pageNo)
  213. line = int(pageSize)
  214. try:
  215. if bucket: # 条件查询
  216. bucket_id = VodBucketModel.objects.filter(
  217. bucket=bucket).values('id')[0]['id']
  218. store_meal_qs = Store_Meal.objects.filter(
  219. bucket_id=bucket_id)
  220. else: # 查询全部
  221. store_meal_qs = Store_Meal.objects.filter()
  222. store_meal_val = store_meal_qs.values(
  223. 'id',
  224. 'bucket__bucket',
  225. 'day',
  226. 'expire',
  227. 'commodity_type',
  228. 'commodity_code',
  229. 'is_discounts',
  230. 'discount_price',
  231. 'virtual_price',
  232. 'price',
  233. 'currency',
  234. 'symbol',
  235. 'is_show',
  236. 'add_time',
  237. 'update_time')
  238. total = len(store_meal_val)
  239. store_meals = store_meal_val[(page - 1) * line:page * line]
  240. store_meal_list = []
  241. for store_meal in store_meals:
  242. # 获取支付方式列表
  243. pay_type_list = [
  244. pay_type['id'] for pay_type in Store_Meal.objects.get(
  245. id=store_meal['id']).pay_type.values('id')]
  246. # 组织响应数据
  247. store_meal_list.append({
  248. 'storeMealID': store_meal['id'],
  249. 'bucket': store_meal['bucket__bucket'],
  250. 'day': store_meal['day'],
  251. 'expire': store_meal['expire'],
  252. 'commodity_type': store_meal['commodity_type'],
  253. 'pay_type': pay_type_list,
  254. 'commodity_code': store_meal['commodity_code'],
  255. 'is_discounts': store_meal['is_discounts'],
  256. 'discount_price': store_meal['discount_price'],
  257. 'virtual_price': store_meal['virtual_price'],
  258. 'price': store_meal['price'],
  259. 'currency': store_meal['currency'],
  260. 'symbol': store_meal['symbol'],
  261. 'is_show': store_meal['is_show'],
  262. 'addTime': store_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
  263. 'updTime': store_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
  264. })
  265. print('store_meal_list: ', store_meal_list)
  266. return response.json(
  267. 0, {'list': store_meal_list, 'total': total})
  268. except Exception as e:
  269. print(e)
  270. return response.json(500, repr(e))
  271. def addOrEditStoreMeal(self, userID, request_dict, response):
  272. # 添加/编辑套餐
  273. print('request_dict: ', request_dict)
  274. storeMealID = request_dict.get('storeMealID', None)
  275. bucket = request_dict.get('bucket', '')
  276. day = int(request_dict.get('day', 0))
  277. expire = int(request_dict.get('expire', 0))
  278. commodity_type = int(request_dict.get('commodity_type', 0))
  279. pay_type = request_dict.get(
  280. 'pay_type', '')[
  281. 1:-1].split(',') # '[1,2]' -> ['1','2']
  282. commodity_code = request_dict.get('commodity_code', '')
  283. is_discounts = int(request_dict.get('is_discounts', 0))
  284. discount_price = request_dict.get('discount_price', '')
  285. virtual_price = request_dict.get('virtual_price', '')
  286. price = request_dict.get('price', '')
  287. currency = request_dict.get('currency', '')
  288. symbol = request_dict.get('symbol', '')
  289. is_show = int(request_dict.get('is_show', 0))
  290. isEdit = request_dict.get('isEdit', None)
  291. if not all([bucket, pay_type, price, currency, symbol]):
  292. return response.json(444)
  293. try:
  294. bucket_id = VodBucketModel.objects.filter(
  295. bucket=bucket).values('id')[0]['id']
  296. store_meal_data = {
  297. 'bucket_id': bucket_id,
  298. 'day': day,
  299. 'expire': expire,
  300. 'commodity_type': commodity_type,
  301. 'commodity_code': commodity_code,
  302. 'is_discounts': is_discounts,
  303. 'discount_price': discount_price,
  304. 'virtual_price': virtual_price,
  305. 'price': price,
  306. 'currency': currency,
  307. 'symbol': symbol,
  308. 'is_show': is_show,
  309. }
  310. if isEdit:
  311. if not storeMealID:
  312. return response.json(444)
  313. Store_Meal.objects.filter(
  314. id=storeMealID).update(
  315. **store_meal_data)
  316. Store_Meal.objects.get(id=storeMealID).pay_type.set(pay_type)
  317. else:
  318. Store_Meal.objects.create(
  319. **store_meal_data).pay_type.set(pay_type)
  320. return response.json(0)
  321. except Exception as e:
  322. print(e)
  323. return response.json(500, repr(e))
  324. def deleteStoreMeal(self, userID, request_dict, response):
  325. # 删除套餐信息
  326. print('request_dict: ', request_dict)
  327. storeMealID = request_dict.get('storeMealID', None)
  328. if not storeMealID:
  329. return response.json(444)
  330. try:
  331. Store_Meal.objects.filter(id=storeMealID).delete()
  332. return response.json(0)
  333. except Exception as e:
  334. print(e)
  335. return response.json(500, repr(e))
  336. def getStoreMealLanguage(self, userID, request_dict, response):
  337. # 获取套餐语言
  338. print('request_dict: ', request_dict)
  339. storeMealID = request_dict.get('storeMealID', None)
  340. pageNo = request_dict.get('pageNo', None)
  341. pageSize = request_dict.get('pageSize', None)
  342. if not all([pageNo, pageSize]):
  343. return response.json(444)
  344. page = int(pageNo)
  345. line = int(pageSize)
  346. try:
  347. if storeMealID: # 条件查询
  348. store_meal_lang_qs = Store_Meal.objects.filter(id=storeMealID)
  349. else: # 查询全部
  350. store_meal_lang_qs = Store_Meal.objects.filter(
  351. lang__isnull=False)
  352. store_meal_lang_val = store_meal_lang_qs.values(
  353. 'id',
  354. 'lang__id',
  355. 'lang__lang',
  356. 'lang__title',
  357. 'lang__content',
  358. 'lang__discount_content',
  359. )
  360. total = len(store_meal_lang_val)
  361. store_meal_langs = store_meal_lang_val[(
  362. page - 1) * line:page * line]
  363. store_meal_lang_list = []
  364. for store_meal_lang in store_meal_langs:
  365. store_meal_lang_list.append({
  366. 'storeMealID': store_meal_lang['id'],
  367. 'langID': store_meal_lang['lang__id'],
  368. 'lang': store_meal_lang['lang__lang'],
  369. 'title': store_meal_lang['lang__title'],
  370. 'content': store_meal_lang['lang__content'],
  371. 'discountContent': store_meal_lang['lang__discount_content'],
  372. })
  373. print('store_meal_lang_list: ', store_meal_lang_list)
  374. return response.json(
  375. 0, {'list': store_meal_lang_list, 'total': total})
  376. except Exception as e:
  377. print(e)
  378. return response.json(500, repr(e))
  379. def addOrEditStoreMealLanguage(self, userID, request_dict, response):
  380. # 添加/编辑套餐语言
  381. print('request_dict: ', request_dict)
  382. storeMealID = request_dict.get('storeMealID', None)
  383. lang = request_dict.get('lang', None)
  384. title = request_dict.get('title', None)
  385. content = request_dict.get('content', None)
  386. discount_content = request_dict.get('discount_content', '')
  387. isEdit = request_dict.get('isEdit', None)
  388. if not all([storeMealID, lang, title, content]):
  389. return response.json(444)
  390. try:
  391. # 查询套餐是否存在
  392. store_meal_qs = Store_Meal.objects.get(id=storeMealID)
  393. if not store_meal_qs:
  394. return response.json(173)
  395. if isEdit: # 编辑
  396. langID = request_dict.get('langID', None)
  397. if not langID:
  398. return response.json(444)
  399. Lang.objects.filter(
  400. id=langID).update(
  401. lang=lang,
  402. title=title,
  403. content=content,
  404. discount_content=discount_content)
  405. else: # 添加
  406. lang_obj = Lang.objects.filter(
  407. lang=lang,
  408. title=title,
  409. content=content,
  410. discount_content=discount_content)
  411. if not lang_obj.exists():
  412. # 数据不存在,lang表创建数据
  413. Lang.objects.create(
  414. lang=lang,
  415. title=title,
  416. content=content,
  417. discount_content=discount_content)
  418. lang_obj = Lang.objects.filter(
  419. lang=lang,
  420. title=title,
  421. content=content,
  422. discount_content=discount_content)
  423. store_meal_qs.lang.add(*lang_obj) # store_meal表添加语言数据
  424. return response.json(0)
  425. except Exception as e:
  426. print(e)
  427. return response.json(500, repr(e))
  428. def deleteStoreMealLanguage(self, userID, request_dict, response):
  429. # 删除套餐语言
  430. storeMealID = request_dict.get('storeMealID', None)
  431. langID = request_dict.get('langID', None)
  432. if not all([storeMealID, langID]):
  433. return response.json(444)
  434. try:
  435. storeMeal_qs = Store_Meal.objects.get(id=storeMealID)
  436. if not storeMeal_qs:
  437. return response.json(173)
  438. lang_qs = Lang.objects.filter(id=langID)
  439. storeMeal_qs.lang.remove(*lang_qs)
  440. return response.json(0)
  441. except Exception as e:
  442. print(e)
  443. return response.json(500, repr(e))
  444. def getCdkList(self, userID, request_dict, response):
  445. # 获取激活码列表
  446. pageNo = request_dict.get('pageNo', None)
  447. pageSize = request_dict.get('pageSize', None)
  448. cdk = request_dict.get('cdk', None)
  449. order = request_dict.get('order', None)
  450. is_activate = request_dict.get('is_activate', None)
  451. mold = request_dict.get('mold', None)
  452. lang = request_dict.get('lang', 'cn')
  453. if not all([pageNo, pageSize]):
  454. return response.json(444)
  455. page = int(pageNo)
  456. line = int(pageSize)
  457. try:
  458. if cdk:
  459. searchVal = cdk.strip()
  460. if order:
  461. searchVal = order.strip()
  462. if is_activate:
  463. searchVal = is_activate.strip()
  464. cdk_qs = CDKcontextModel.objects.filter().all()
  465. if cdk:
  466. cdk_qs = cdk_qs.filter(cdk__contains=searchVal)
  467. if order:
  468. cdk_qs = cdk_qs.filter(order__contains=searchVal)
  469. if is_activate:
  470. cdk_qs = cdk_qs.filter(is_activate=searchVal)
  471. if mold:
  472. cdk_qs = cdk_qs.filter(rank__bucket__mold=mold)
  473. cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
  474. cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
  475. cdk_qs = cdk_qs.values(
  476. 'id',
  477. 'cdk',
  478. 'create_time',
  479. 'valid_time',
  480. 'is_activate',
  481. 'rank__id',
  482. 'rank__title',
  483. 'order',
  484. 'create_time',
  485. 'rank__bucket__mold')
  486. cdk_qs = cdk_qs.order_by('-create_time') # 根据CDK创建时间降序排序
  487. count = cdk_qs.count()
  488. cdk_qs = cdk_qs[(page - 1) * line:page * line]
  489. return response.json(
  490. 0, {'list': list(cdk_qs), 'total': count})
  491. except Exception as e:
  492. print(e)
  493. return response.json(500, repr(e))
  494. def createCdk(self, request_dict, response):
  495. cdk_num = request_dict.get("cdknum", None)
  496. mold = request_dict.get('mold', None)
  497. order = request_dict.get('order', None)
  498. cdk_list = []
  499. sm_qs = Store_Meal.objects.filter(
  500. pay_type__payment='cdk_pay', bucket__mold=mold)
  501. if sm_qs.exists:
  502. rank = sm_qs[0].id
  503. for i in range(int(cdk_num)):
  504. nowTime = int(time.time())
  505. cdk = hashlib.md5((str(uuid.uuid1()) +
  506. str(nowTime)).encode('utf-8')).hexdigest()
  507. cdk_model = CDKcontextModel(
  508. cdk=cdk,
  509. create_time=nowTime,
  510. valid_time=0,
  511. is_activate=0,
  512. rank_id=rank,
  513. order=order,
  514. )
  515. cdk_list.append(cdk_model)
  516. try:
  517. CDKcontextModel.objects.bulk_create(cdk_list)
  518. except Exception as e:
  519. print(repr(e))
  520. return response.json(404, repr(e))
  521. else:
  522. return response.json(0)
  523. return response.json(0)
  524. def deleteCdk(self, request_dict, response):
  525. cdk_id = request_dict.get("id", None)
  526. try:
  527. CDKcontextModel.objects.get(id=cdk_id).delete()
  528. return response.json(0)
  529. except Exception as e:
  530. return response.json(500, repr(e))
  531. def downloadCDK(self, request_dict, response):
  532. region = request_dict.get('region', None)
  533. content = ''
  534. if region == 'cn':
  535. # 下载国内未使用激活码
  536. content += '激活码(国内)\n'
  537. cdk_inactivate_qs = CDKcontextModel.objects.filter(
  538. is_activate=0, rank__bucket__mold=0).values('cdk')
  539. else:
  540. # 下载国外未使用激活码
  541. content += '激活码(国外)\n'
  542. cdk_inactivate_qs = CDKcontextModel.objects.filter(
  543. is_activate=0, rank__bucket__mold=1).values('cdk')
  544. for cdk_inactivate in cdk_inactivate_qs:
  545. content += cdk_inactivate['cdk'] + '\n'
  546. # print(content)
  547. response = StreamingHttpResponse(content)
  548. response['Content-Type'] = 'application/octet-stream'
  549. response['Content-Disposition'] = 'attachment;filename="CDK.txt"'
  550. return response
  551. def getDeviceOrderList(self, request_dict, response):
  552. print('request_dict: ', request_dict)
  553. pageNo = request_dict.get('pageNo', None)
  554. pageSize = request_dict.get('pageSize', None)
  555. uid = request_dict.get('uid', None)
  556. channel = request_dict.get('channel', None)
  557. orderID = request_dict.get('orderID', None)
  558. userID__username = request_dict.get('userID__username', None)
  559. currency = request_dict.get('currency', None)
  560. payType = request_dict.get('payType', None)
  561. status = request_dict.get('status', None)
  562. timeRange = request_dict.getlist('timeRange[]', None)
  563. if not all([pageNo, pageSize]):
  564. return response.json(444)
  565. page = int(pageNo)
  566. line = int(pageSize)
  567. try:
  568. omqs = Order_Model.objects.all()
  569. # 筛选指定设备id的订单
  570. if uid:
  571. omqs = omqs.filter(UID=uid)
  572. if channel:
  573. omqs = omqs.filter(channel=channel)
  574. if orderID:
  575. omqs = omqs.filter(orderID=orderID)
  576. if userID__username:
  577. omqs = omqs.filter(userID__username=userID__username)
  578. if currency:
  579. omqs = omqs.filter(currency=currency)
  580. if payType:
  581. omqs = omqs.filter(payType=payType)
  582. if status:
  583. omqs = omqs.filter(status=status)
  584. if timeRange:
  585. startTime, endTime = int(
  586. timeRange[0][:-3]), int(timeRange[1][:-3])
  587. omqs = omqs.filter(
  588. addTime__gte=startTime,
  589. addTime__lte=endTime)
  590. if not omqs.exists():
  591. return response.json(0, [])
  592. count = omqs.count()
  593. order_ql = omqs.values(
  594. "orderID",
  595. "UID",
  596. "userID__username",
  597. "channel",
  598. "desc",
  599. "price",
  600. "currency",
  601. "addTime",
  602. "updTime",
  603. "paypal",
  604. "payType",
  605. "rank__day",
  606. "rank__price",
  607. "status")
  608. order_ql = order_ql.order_by('-addTime') # 根据CDK创建时间降序排序
  609. order_ql = order_ql[(page - 1) * line:page * line]
  610. return response.json(
  611. 0, {'list': list(order_ql), 'total': count})
  612. except Exception as e:
  613. print(e)
  614. return response.json(500, repr(e))
  615. def deleteDeviceOrder(self, userID, request_dict, response):
  616. orderID = request_dict.get('orderID', None)
  617. if orderID:
  618. Order_Model.objects.filter(orderID=orderID).delete()
  619. return response.json(0)
  620. else:
  621. return response.json(444)
  622. def getDevicePackageList(self, request_dict, response):
  623. pageNo = request_dict.get('pageNo', None)
  624. pageSize = request_dict.get('pageSize', None)
  625. uid = request_dict.get('uid', None)
  626. if not all([pageNo, pageSize]):
  627. return response.json(444)
  628. page = int(pageNo)
  629. line = int(pageSize)
  630. try:
  631. ubqs = UID_Bucket.objects.all()
  632. if uid:
  633. ubqs = ubqs.filter(uid__contains=uid)
  634. if not ubqs.exists():
  635. return response.json(0, [])
  636. count = ubqs.count()
  637. ubqs = ubqs.values(
  638. 'id',
  639. 'uid',
  640. 'channel',
  641. 'status',
  642. 'endTime',
  643. 'bucket__bucket',
  644. 'bucket__storeDay',
  645. 'bucket__area')
  646. ubqs = ubqs.order_by('-addTime') # 根据CDK创建时间降序排序
  647. ubqs = ubqs[(page - 1) * line:page * line]
  648. return response.json(
  649. 0, {'list': list(ubqs), 'total': count})
  650. except Exception as e:
  651. print(e)
  652. return response.json(500, repr(e))
  653. def deleteDevicePackage(self, userID, request_dict, response):
  654. orderID = request_dict.get('orderID', None)
  655. if orderID:
  656. Order_Model.objects.filter(orderID=orderID).delete()
  657. return response.json(0)
  658. else:
  659. return response.json(444)
  660. # 重置设备云存体验
  661. def do_experience_reset(self, request_dict, userID, response):
  662. bid = request_dict.get("id", None)
  663. ubq = UID_Bucket.objects.filter(id=bid)
  664. if ubq:
  665. eq = ExperienceContextModel.objects.filter(uid=ubq[0].uid)
  666. if eq:
  667. eq.delete()
  668. Order_Model.objects.filter(uid_bucket_id=bid).delete()
  669. ubq.delete()
  670. return response.json(0)
  671. else:
  672. return response.json(10007)
  673. else:
  674. return response.json(0, '重置云存体验失败')
  675. def getCloudUserList(self, request_dict, response):
  676. print('request_dict: ', request_dict)
  677. # UID_Bucket表查询数据
  678. uid = request_dict.get('uid', None)
  679. status = request_dict.get('status', None)
  680. use_status = request_dict.get('use_status', None)
  681. has_unused = request_dict.get('has_unused', None)
  682. addTimeRange = request_dict.getlist('addTimeRange[]', None)
  683. endTimeRange = request_dict.getlist('endTimeRange[]', None)
  684. # Order_Model表查询数据
  685. username = request_dict.get('username', None)
  686. phone = request_dict.get('phone', None)
  687. userEmail = request_dict.get('userEmail', None)
  688. payType = request_dict.get('payType', None)
  689. pageNo = request_dict.get('pageNo', None)
  690. pageSize = request_dict.get('pageSize', None)
  691. if not all([pageNo, pageSize]):
  692. return response.json(444)
  693. page = int(pageNo)
  694. line = int(pageSize)
  695. try:
  696. uid_bucket_qs = UID_Bucket.objects.all()
  697. if uid:
  698. uid_bucket_qs = uid_bucket_qs.filter(uid__contains=uid)
  699. if status:
  700. uid_bucket_qs = uid_bucket_qs.filter(status=status)
  701. if use_status:
  702. uid_bucket_qs = uid_bucket_qs.filter(use_status=use_status)
  703. if has_unused:
  704. uid_bucket_qs = uid_bucket_qs.filter(has_unused=has_unused)
  705. if addTimeRange:
  706. addStartTime, addEndTime = int(
  707. addTimeRange[0][:-3]), int(addTimeRange[1][:-3])
  708. uid_bucket_qs = uid_bucket_qs.filter(
  709. addTime__gte=addStartTime,
  710. addTime__lte=addEndTime)
  711. if endTimeRange:
  712. endStartTime, endEndTime = int(
  713. endTimeRange[0][:-3]), int(endTimeRange[1][:-3])
  714. uid_bucket_qs = uid_bucket_qs.filter(
  715. addTime__gte=endStartTime,
  716. addTime__lte=endEndTime)
  717. if not uid_bucket_qs.exists():
  718. return response.json(0, [])
  719. order_qs = Order_Model.objects.filter(
  720. uid_bucket_id__in=uid_bucket_qs.values('id'))
  721. if username or phone or userEmail or payType:
  722. if username:
  723. order_qs = order_qs.filter(userID__username=username)
  724. if phone:
  725. order_qs = order_qs.filter(userID__phone__contains=phone)
  726. if userEmail:
  727. order_qs = order_qs.filter(
  728. userID__userEmail__contains=userEmail)
  729. if payType:
  730. order_qs = order_qs.filter(payType=int(payType))
  731. # 过滤套餐关联的UID_Bucket数据
  732. uid_bucket_qs = uid_bucket_qs.filter(
  733. id__in=order_qs.values_list(
  734. 'uid_bucket_id', flat=True))
  735. cg_qs = CloudLogModel.objects.filter(
  736. operation='cloudstorage/queryvodlist')
  737. list_data = []
  738. count = uid_bucket_qs.count()
  739. uid_bucket_qs = uid_bucket_qs[(page - 1) * line:page * line]
  740. for uid_bucket in uid_bucket_qs:
  741. data = {
  742. 'id': uid_bucket.id,
  743. 'uid': uid_bucket.uid,
  744. 'channel': uid_bucket.channel,
  745. 'status': uid_bucket.status,
  746. 'endTime': time.strftime(
  747. "%Y--%m--%d %H:%M:%S",
  748. time.localtime(
  749. uid_bucket.endTime)),
  750. 'addTime': time.strftime(
  751. "%Y--%m--%d %H:%M:%S",
  752. time.localtime(
  753. uid_bucket.addTime)),
  754. 'use_status': uid_bucket.use_status,
  755. 'has_unused': uid_bucket.has_unused}
  756. for order in order_qs.filter(
  757. uid_bucket_id=uid_bucket.id).values(
  758. 'uid_bucket_id',
  759. 'desc',
  760. 'userID__userID',
  761. 'UID',
  762. 'price',
  763. 'payType',
  764. 'userID__username',
  765. 'userID__phone',
  766. 'userID__userEmail',
  767. 'userID__data_joined'):
  768. data['desc'] = order['desc']
  769. data['payType'] = order['payType']
  770. data['price'] = order['price']
  771. data['username'] = order['userID__username']
  772. data['phone'] = order['userID__phone']
  773. data['userEmail'] = order['userID__userEmail']
  774. data['data_joined'] = order['userID__data_joined'].strftime(
  775. "%Y-%m-%d %H:%M:%S")
  776. data['playcount'] = cg_qs.filter(
  777. operation='cloudstorage/queryvodlist', uid=order['UID']).count()
  778. list_data.append(data)
  779. return response.json(
  780. 0, {'list': list_data, 'total': count})
  781. except Exception as e:
  782. print(e)
  783. return response.json(500, repr(e))