|
@@ -21,244 +21,245 @@ from Object.UnicomObject import UnicomObjeect
|
|
|
|
|
|
|
|
|
class UnicomComboView(View):
|
|
|
- def get(self, request, *args, **kwargs):
|
|
|
- request.encoding = 'utf-8'
|
|
|
- operation = kwargs.get('operation')
|
|
|
- return self.validation(request.GET, request, operation)
|
|
|
-
|
|
|
- def post(self, request, *args, **kwargs):
|
|
|
- request.encoding = 'utf-8'
|
|
|
- operation = kwargs.get('operation')
|
|
|
- return self.validation(request.POST, request, operation)
|
|
|
-
|
|
|
- def validation(self, request_dict, request, operation):
|
|
|
- if operation == 'buy-notify':
|
|
|
- return self.package_callback_notify(request_dict, request)
|
|
|
- elif operation == 'device-queue-monitoring':
|
|
|
- return self.device_queue_monitoring_push(request_dict, request)
|
|
|
- elif operation == 'device-status-change':
|
|
|
- return self.device_status_change_push(request_dict, request)
|
|
|
- else:
|
|
|
- token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
|
- lang = request_dict.get('lang', token.lang)
|
|
|
- response = ResponseObject(lang)
|
|
|
- if token.code != 0:
|
|
|
- return response.json(token.code)
|
|
|
- user_id = token.userID
|
|
|
- if operation == 'device-bind':
|
|
|
- return self.device_add(user_id, request_dict, response)
|
|
|
- elif operation == 'combo-save':
|
|
|
- return self.save_unicom_combo(request_dict, response)
|
|
|
- elif operation == 'combo-list':
|
|
|
- return self.query_package_list(response)
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def device_add(cls, user_id, request_dict, response):
|
|
|
- """
|
|
|
- 设备绑定iccid
|
|
|
- @param user_id:
|
|
|
- @param request_dict:
|
|
|
- @param response:
|
|
|
- @return:
|
|
|
- """
|
|
|
- iccid = request_dict.get('iccid', None)
|
|
|
- uid = request_dict.get('uid', None)
|
|
|
- if not all([iccid, uid]):
|
|
|
- return response.json(444)
|
|
|
- n_time = int(time.time())
|
|
|
- try:
|
|
|
- # 待完善代码 根据uid与用户id验证系统设备
|
|
|
- unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
|
|
|
- if unicom_device_qs.exists():
|
|
|
- return response.json(174)
|
|
|
- unicom_obj = UnicomObjeect()
|
|
|
- result = unicom_obj.verify_device(iccid=iccid)
|
|
|
- if result.status_code == 200 and result.text:
|
|
|
- res_dict = json.loads(result.text)
|
|
|
- if res_dict['success']:
|
|
|
- if res_dict['data']['status'] == 0:
|
|
|
- return response.json(173)
|
|
|
- params = {'user_id': user_id, 'iccid': iccid, 'uid': uid, 'updated_time': n_time,
|
|
|
- 'created_time': n_time}
|
|
|
- UnicomDeviceInfo.objects.create(**params)
|
|
|
- return response.json(0)
|
|
|
- else:
|
|
|
- return response.json(173)
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return response.json(177, repr(e))
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def save_unicom_combo(cls, request_dict, response):
|
|
|
- """
|
|
|
- 联通套餐保存
|
|
|
- @param request_dict:
|
|
|
- @param response:
|
|
|
- @return:
|
|
|
- """
|
|
|
- combo_id = request_dict.get('id', None)
|
|
|
- combo_name = request_dict.get('comboName', None)
|
|
|
- flow_total = request_dict.get('flowTotal', None)
|
|
|
- expiration_days = request_dict.get('expirationDays', None)
|
|
|
- expiration_type = request_dict.get('expirationType', None)
|
|
|
- price = request_dict.get('price', None)
|
|
|
- remark = request_dict.get('remark', None)
|
|
|
- pay_type = request_dict.get('payType', '').split(',')
|
|
|
- if not all([pay_type, combo_name, flow_total, expiration_days, expiration_type, price]):
|
|
|
- return response.json(444)
|
|
|
- try:
|
|
|
- flow_total = int(flow_total)
|
|
|
- expiration_days = int(expiration_days)
|
|
|
- expiration_type = int(expiration_type)
|
|
|
- with transaction.atomic():
|
|
|
- re_data = {
|
|
|
- 'combo_name': combo_name,
|
|
|
- 'flow_total': flow_total,
|
|
|
- 'expiration_days': expiration_days,
|
|
|
- 'expiration_type': expiration_type,
|
|
|
- 'price': price,
|
|
|
- }
|
|
|
- if remark:
|
|
|
- re_data['remark'] = remark
|
|
|
- if combo_id:
|
|
|
- UnicomCombo.objects.filter(id=combo_id).update(**re_data)
|
|
|
- UnicomCombo.objects.get(id=combo_id).pay_type.set(pay_type)
|
|
|
- return response.json(0)
|
|
|
- UnicomCombo.objects.create(**re_data).pay_type.set(pay_type)
|
|
|
- return response.json(0)
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return response.json(177, repr(e))
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def query_package_list(cls, response):
|
|
|
- """
|
|
|
- 查询套餐列表
|
|
|
- @return:
|
|
|
- """
|
|
|
- try:
|
|
|
- combo_qs = UnicomCombo.objects.filter(is_show=1, status=0, is_del=False) \
|
|
|
- .order_by('sort').values('id', 'combo_name',
|
|
|
- 'flow_total',
|
|
|
- 'expiration_days',
|
|
|
- 'expiration_type', 'price',
|
|
|
- 'remark')
|
|
|
- if not combo_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
- combo_list = []
|
|
|
- for item in combo_qs:
|
|
|
- # 获取支付方式列表
|
|
|
- pay_type_qs = Pay_Type.objects.filter(unicomcombo=item['id']).values('id', 'payment')
|
|
|
- combo_list.append({
|
|
|
- 'id': item['id'],
|
|
|
- 'comboName': item['combo_name'],
|
|
|
- 'flowTotal': item['flow_total'],
|
|
|
- 'expirationDays': item['expiration_days'],
|
|
|
- 'expirationType': item['expiration_type'],
|
|
|
- 'price': item['price'],
|
|
|
- 'remark': item['remark'],
|
|
|
- 'payTypes': list(pay_type_qs),
|
|
|
- })
|
|
|
- return response.json(0, combo_list)
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return response.json(177, repr(e))
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def buy_package(cls):
|
|
|
- """
|
|
|
- 购买套餐
|
|
|
- @return:
|
|
|
- """
|
|
|
- pass
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def query_device_usage_history(cls):
|
|
|
- """
|
|
|
- 查询用量历史
|
|
|
- @return:
|
|
|
- """
|
|
|
-
|
|
|
- @staticmethod
|
|
|
- def package_callback_notify(request_dict, request):
|
|
|
- """
|
|
|
- 异步套餐订购回调
|
|
|
- @param request_dict:
|
|
|
- @param request:
|
|
|
- @return:
|
|
|
- """
|
|
|
- logger = logging.getLogger('info')
|
|
|
- try:
|
|
|
- logger.info('联通异步套餐订购回调参数{}'.format(request_dict))
|
|
|
- body = request.body.decode("utf-8")
|
|
|
- if body:
|
|
|
- dict_data = json.loads(body)
|
|
|
- sign = dict_data['sign']
|
|
|
- logger.info('设备订购异步回调请求参数{}'.format(dict_data))
|
|
|
- dict_data.pop('sign')
|
|
|
- unicom_obj = UnicomObjeect()
|
|
|
- generate_sign = unicom_obj.createSign(**dict_data)
|
|
|
- logger.info('设备订购请求签名{}'.format(sign))
|
|
|
- logger.info('设备订购生成签名{}'.format(generate_sign))
|
|
|
- r_data = {'success': True, 'msg': '成功'}
|
|
|
- return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
- except Exception as e:
|
|
|
- print(repr(e))
|
|
|
- r_data = {'success': False, 'msg': '失败'}
|
|
|
- return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
-
|
|
|
- @staticmethod
|
|
|
- def device_queue_monitoring_push(request_dict, request):
|
|
|
- """
|
|
|
- 设备套餐队列用完或者到期推送
|
|
|
- @param request_dict:
|
|
|
- @param request:
|
|
|
- @return:
|
|
|
- """
|
|
|
- logger = logging.getLogger('info')
|
|
|
- try:
|
|
|
- logger.info('设备套餐队列推送{}'.format(request_dict))
|
|
|
- body = request.body.decode("utf-8")
|
|
|
- if body:
|
|
|
- dict_data = json.loads(body)
|
|
|
- sign = dict_data['sign']
|
|
|
- logger.info('设备套餐队列回调请求参数{}'.format(dict_data))
|
|
|
- dict_data.pop('sign')
|
|
|
- unicom_obj = UnicomObjeect()
|
|
|
- generate_sign = unicom_obj.createSign(**dict_data)
|
|
|
- logger.info('设备套餐队列请求签名{}'.format(sign))
|
|
|
- logger.info('设备套餐队列生成签名{}'.format(generate_sign))
|
|
|
- r_data = {'success': True, 'msg': '成功'}
|
|
|
- return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
- except Exception as e:
|
|
|
- print(repr(e))
|
|
|
- r_data = {'success': False, 'msg': '失败'}
|
|
|
- return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
-
|
|
|
- @staticmethod
|
|
|
- def device_status_change_push(request_dict, request):
|
|
|
- """
|
|
|
- 设备状态变更推送执行场景说明
|
|
|
- @param request_dict:
|
|
|
- @param request:
|
|
|
- @return:
|
|
|
- """
|
|
|
- logger = logging.getLogger('info')
|
|
|
- try:
|
|
|
- logger.info('设备状态变更推送{}'.format(request_dict))
|
|
|
- body = request.body.decode("utf-8")
|
|
|
- if body:
|
|
|
- dict_data = json.loads(body)
|
|
|
- sign = dict_data['sign']
|
|
|
- logger.info('设备状态变更推送请求参数{}'.format(dict_data))
|
|
|
- dict_data.pop('sign')
|
|
|
- unicom_obj = UnicomObjeect()
|
|
|
- generate_sign = unicom_obj.createSign(**dict_data)
|
|
|
- logger.info('设备状态变更推送请求签名{}'.format(sign))
|
|
|
- logger.info('设备状态变更推送生成签名{}'.format(generate_sign))
|
|
|
- r_data = {'success': True, 'msg': '成功'}
|
|
|
- return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
- except Exception as e:
|
|
|
- print(repr(e))
|
|
|
- r_data = {'success': False, 'msg': '失败'}
|
|
|
- return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
+ pass
|
|
|
+ # def get(self, request, *args, **kwargs):
|
|
|
+ # request.encoding = 'utf-8'
|
|
|
+ # operation = kwargs.get('operation')
|
|
|
+ # return self.validation(request.GET, request, operation)
|
|
|
+ #
|
|
|
+ # def post(self, request, *args, **kwargs):
|
|
|
+ # request.encoding = 'utf-8'
|
|
|
+ # operation = kwargs.get('operation')
|
|
|
+ # return self.validation(request.POST, request, operation)
|
|
|
+ #
|
|
|
+ # def validation(self, request_dict, request, operation):
|
|
|
+ # if operation == 'buy-notify':
|
|
|
+ # return self.package_callback_notify(request_dict, request)
|
|
|
+ # elif operation == 'device-queue-monitoring':
|
|
|
+ # return self.device_queue_monitoring_push(request_dict, request)
|
|
|
+ # elif operation == 'device-status-change':
|
|
|
+ # return self.device_status_change_push(request_dict, request)
|
|
|
+ # else:
|
|
|
+ # token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
|
+ # lang = request_dict.get('lang', token.lang)
|
|
|
+ # response = ResponseObject(lang)
|
|
|
+ # if token.code != 0:
|
|
|
+ # return response.json(token.code)
|
|
|
+ # user_id = token.userID
|
|
|
+ # if operation == 'device-bind':
|
|
|
+ # return self.device_add(user_id, request_dict, response)
|
|
|
+ # elif operation == 'combo-save':
|
|
|
+ # return self.save_unicom_combo(request_dict, response)
|
|
|
+ # elif operation == 'combo-list':
|
|
|
+ # return self.query_package_list(response)
|
|
|
+ #
|
|
|
+ # @classmethod
|
|
|
+ # def device_add(cls, user_id, request_dict, response):
|
|
|
+ # """
|
|
|
+ # 设备绑定iccid
|
|
|
+ # @param user_id:
|
|
|
+ # @param request_dict:
|
|
|
+ # @param response:
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # iccid = request_dict.get('iccid', None)
|
|
|
+ # uid = request_dict.get('uid', None)
|
|
|
+ # if not all([iccid, uid]):
|
|
|
+ # return response.json(444)
|
|
|
+ # n_time = int(time.time())
|
|
|
+ # try:
|
|
|
+ # # 待完善代码 根据uid与用户id验证系统设备
|
|
|
+ # unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
|
|
|
+ # if unicom_device_qs.exists():
|
|
|
+ # return response.json(174)
|
|
|
+ # unicom_obj = UnicomObjeect()
|
|
|
+ # result = unicom_obj.verify_device(iccid=iccid)
|
|
|
+ # if result.status_code == 200 and result.text:
|
|
|
+ # res_dict = json.loads(result.text)
|
|
|
+ # if res_dict['success']:
|
|
|
+ # if res_dict['data']['status'] == 0:
|
|
|
+ # return response.json(173)
|
|
|
+ # params = {'user_id': user_id, 'iccid': iccid, 'uid': uid, 'updated_time': n_time,
|
|
|
+ # 'created_time': n_time}
|
|
|
+ # UnicomDeviceInfo.objects.create(**params)
|
|
|
+ # return response.json(0)
|
|
|
+ # else:
|
|
|
+ # return response.json(173)
|
|
|
+ # except Exception as e:
|
|
|
+ # print(e)
|
|
|
+ # return response.json(177, repr(e))
|
|
|
+ #
|
|
|
+ # @classmethod
|
|
|
+ # def save_unicom_combo(cls, request_dict, response):
|
|
|
+ # """
|
|
|
+ # 联通套餐保存
|
|
|
+ # @param request_dict:
|
|
|
+ # @param response:
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # combo_id = request_dict.get('id', None)
|
|
|
+ # combo_name = request_dict.get('comboName', None)
|
|
|
+ # flow_total = request_dict.get('flowTotal', None)
|
|
|
+ # expiration_days = request_dict.get('expirationDays', None)
|
|
|
+ # expiration_type = request_dict.get('expirationType', None)
|
|
|
+ # price = request_dict.get('price', None)
|
|
|
+ # remark = request_dict.get('remark', None)
|
|
|
+ # pay_type = request_dict.get('payType', '').split(',')
|
|
|
+ # if not all([pay_type, combo_name, flow_total, expiration_days, expiration_type, price]):
|
|
|
+ # return response.json(444)
|
|
|
+ # try:
|
|
|
+ # flow_total = int(flow_total)
|
|
|
+ # expiration_days = int(expiration_days)
|
|
|
+ # expiration_type = int(expiration_type)
|
|
|
+ # with transaction.atomic():
|
|
|
+ # re_data = {
|
|
|
+ # 'combo_name': combo_name,
|
|
|
+ # 'flow_total': flow_total,
|
|
|
+ # 'expiration_days': expiration_days,
|
|
|
+ # 'expiration_type': expiration_type,
|
|
|
+ # 'price': price,
|
|
|
+ # }
|
|
|
+ # if remark:
|
|
|
+ # re_data['remark'] = remark
|
|
|
+ # if combo_id:
|
|
|
+ # UnicomCombo.objects.filter(id=combo_id).update(**re_data)
|
|
|
+ # UnicomCombo.objects.get(id=combo_id).pay_type.set(pay_type)
|
|
|
+ # return response.json(0)
|
|
|
+ # UnicomCombo.objects.create(**re_data).pay_type.set(pay_type)
|
|
|
+ # return response.json(0)
|
|
|
+ # except Exception as e:
|
|
|
+ # print(e)
|
|
|
+ # return response.json(177, repr(e))
|
|
|
+ #
|
|
|
+ # @classmethod
|
|
|
+ # def query_package_list(cls, response):
|
|
|
+ # """
|
|
|
+ # 查询套餐列表
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # try:
|
|
|
+ # combo_qs = UnicomCombo.objects.filter(is_show=1, status=0, is_del=False) \
|
|
|
+ # .order_by('sort').values('id', 'combo_name',
|
|
|
+ # 'flow_total',
|
|
|
+ # 'expiration_days',
|
|
|
+ # 'expiration_type', 'price',
|
|
|
+ # 'remark')
|
|
|
+ # if not combo_qs.exists():
|
|
|
+ # return response.json(0, [])
|
|
|
+ # combo_list = []
|
|
|
+ # for item in combo_qs:
|
|
|
+ # # 获取支付方式列表
|
|
|
+ # pay_type_qs = Pay_Type.objects.filter(unicomcombo=item['id']).values('id', 'payment')
|
|
|
+ # combo_list.append({
|
|
|
+ # 'id': item['id'],
|
|
|
+ # 'comboName': item['combo_name'],
|
|
|
+ # 'flowTotal': item['flow_total'],
|
|
|
+ # 'expirationDays': item['expiration_days'],
|
|
|
+ # 'expirationType': item['expiration_type'],
|
|
|
+ # 'price': item['price'],
|
|
|
+ # 'remark': item['remark'],
|
|
|
+ # 'payTypes': list(pay_type_qs),
|
|
|
+ # })
|
|
|
+ # return response.json(0, combo_list)
|
|
|
+ # except Exception as e:
|
|
|
+ # print(e)
|
|
|
+ # return response.json(177, repr(e))
|
|
|
+ #
|
|
|
+ # @classmethod
|
|
|
+ # def buy_package(cls):
|
|
|
+ # """
|
|
|
+ # 购买套餐
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # pass
|
|
|
+ #
|
|
|
+ # @classmethod
|
|
|
+ # def query_device_usage_history(cls):
|
|
|
+ # """
|
|
|
+ # 查询用量历史
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ #
|
|
|
+ # @staticmethod
|
|
|
+ # def package_callback_notify(request_dict, request):
|
|
|
+ # """
|
|
|
+ # 异步套餐订购回调
|
|
|
+ # @param request_dict:
|
|
|
+ # @param request:
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # logger = logging.getLogger('info')
|
|
|
+ # try:
|
|
|
+ # logger.info('联通异步套餐订购回调参数{}'.format(request_dict))
|
|
|
+ # body = request.body.decode("utf-8")
|
|
|
+ # if body:
|
|
|
+ # dict_data = json.loads(body)
|
|
|
+ # sign = dict_data['sign']
|
|
|
+ # logger.info('设备订购异步回调请求参数{}'.format(dict_data))
|
|
|
+ # dict_data.pop('sign')
|
|
|
+ # unicom_obj = UnicomObjeect()
|
|
|
+ # generate_sign = unicom_obj.createSign(**dict_data)
|
|
|
+ # logger.info('设备订购请求签名{}'.format(sign))
|
|
|
+ # logger.info('设备订购生成签名{}'.format(generate_sign))
|
|
|
+ # r_data = {'success': True, 'msg': '成功'}
|
|
|
+ # return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
+ # except Exception as e:
|
|
|
+ # print(repr(e))
|
|
|
+ # r_data = {'success': False, 'msg': '失败'}
|
|
|
+ # return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
+ #
|
|
|
+ # @staticmethod
|
|
|
+ # def device_queue_monitoring_push(request_dict, request):
|
|
|
+ # """
|
|
|
+ # 设备套餐队列用完或者到期推送
|
|
|
+ # @param request_dict:
|
|
|
+ # @param request:
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # logger = logging.getLogger('info')
|
|
|
+ # try:
|
|
|
+ # logger.info('设备套餐队列推送{}'.format(request_dict))
|
|
|
+ # body = request.body.decode("utf-8")
|
|
|
+ # if body:
|
|
|
+ # dict_data = json.loads(body)
|
|
|
+ # sign = dict_data['sign']
|
|
|
+ # logger.info('设备套餐队列回调请求参数{}'.format(dict_data))
|
|
|
+ # dict_data.pop('sign')
|
|
|
+ # unicom_obj = UnicomObjeect()
|
|
|
+ # generate_sign = unicom_obj.createSign(**dict_data)
|
|
|
+ # logger.info('设备套餐队列请求签名{}'.format(sign))
|
|
|
+ # logger.info('设备套餐队列生成签名{}'.format(generate_sign))
|
|
|
+ # r_data = {'success': True, 'msg': '成功'}
|
|
|
+ # return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
+ # except Exception as e:
|
|
|
+ # print(repr(e))
|
|
|
+ # r_data = {'success': False, 'msg': '失败'}
|
|
|
+ # return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
+ #
|
|
|
+ # @staticmethod
|
|
|
+ # def device_status_change_push(request_dict, request):
|
|
|
+ # """
|
|
|
+ # 设备状态变更推送执行场景说明
|
|
|
+ # @param request_dict:
|
|
|
+ # @param request:
|
|
|
+ # @return:
|
|
|
+ # """
|
|
|
+ # logger = logging.getLogger('info')
|
|
|
+ # try:
|
|
|
+ # logger.info('设备状态变更推送{}'.format(request_dict))
|
|
|
+ # body = request.body.decode("utf-8")
|
|
|
+ # if body:
|
|
|
+ # dict_data = json.loads(body)
|
|
|
+ # sign = dict_data['sign']
|
|
|
+ # logger.info('设备状态变更推送请求参数{}'.format(dict_data))
|
|
|
+ # dict_data.pop('sign')
|
|
|
+ # unicom_obj = UnicomObjeect()
|
|
|
+ # generate_sign = unicom_obj.createSign(**dict_data)
|
|
|
+ # logger.info('设备状态变更推送请求签名{}'.format(sign))
|
|
|
+ # logger.info('设备状态变更推送生成签名{}'.format(generate_sign))
|
|
|
+ # r_data = {'success': True, 'msg': '成功'}
|
|
|
+ # return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|
|
|
+ # except Exception as e:
|
|
|
+ # print(repr(e))
|
|
|
+ # r_data = {'success': False, 'msg': '失败'}
|
|
|
+ # return HttpResponse(json.dumps(r_data, ensure_ascii=False), content_type="application/json,charset=utf-8")
|