|
@@ -6,14 +6,14 @@
|
|
|
# @Software: PyCharm
|
|
|
import time
|
|
|
|
|
|
-from django.db import transaction
|
|
|
+from django.db import transaction, connection
|
|
|
from django.views.generic.base import View
|
|
|
|
|
|
from Controller.UnicomCombo.UnicomComboController import UnicomComboView
|
|
|
from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Device_Info, \
|
|
|
Order_Model
|
|
|
-from Object.UnicomObject import UnicomObjeect
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
+from Object.UnicomObject import UnicomObjeect
|
|
|
from Service.CommonService import CommonService
|
|
|
|
|
|
|
|
@@ -41,9 +41,6 @@ class UnicomManageControllerView(View):
|
|
|
# 添加和编辑卡套餐
|
|
|
elif operation == 'edit/combo':
|
|
|
return self.edit_combo(request_dict, response)
|
|
|
- # 获取/筛选4G流量卡订单信息
|
|
|
- elif operation == 'order/info':
|
|
|
- return self.get_order_info(request_dict, response)
|
|
|
# 统计4G套餐
|
|
|
elif operation == 'getComboDataList':
|
|
|
return self.static_info(request_dict, response)
|
|
@@ -56,6 +53,11 @@ class UnicomManageControllerView(View):
|
|
|
# 充值流量
|
|
|
elif operation == 'getFlowPackages':
|
|
|
return self.get_flow_packages(request_dict, response)
|
|
|
+ # 获取 / 筛选4G流量卡订单信息
|
|
|
+ elif operation == 'query-order':
|
|
|
+ return self.query_4G_user_order(request_dict, response)
|
|
|
+ else:
|
|
|
+ return response.json(0)
|
|
|
|
|
|
def get_user_info(self, request_dict, response):
|
|
|
"""
|
|
@@ -128,93 +130,87 @@ class UnicomManageControllerView(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@staticmethod
|
|
|
- def get_order_info(request_dict, response):
|
|
|
+ def query_sql_4g():
|
|
|
"""
|
|
|
- 获取/筛选4G流量卡订单信息
|
|
|
- @param request_dict:
|
|
|
- @param response:
|
|
|
- @return:
|
|
|
- serial_no 设备序列号
|
|
|
+ 4G关联查询SQL
|
|
|
+ @return: str
|
|
|
"""
|
|
|
- UID = request_dict.get('uid', None)
|
|
|
- serial_no = request_dict.get('serialNo', None)
|
|
|
- status = request_dict.get('status', None)
|
|
|
- pageNo = request_dict.get('pageNo', None)
|
|
|
- pageSize = request_dict.get('pageSize', None)
|
|
|
-
|
|
|
- if not all({pageNo, pageSize}):
|
|
|
- return response.json(444)
|
|
|
- page = int(pageNo)
|
|
|
- line = int(pageSize)
|
|
|
+ sql = 'SELECT '
|
|
|
+ sql += 'du.username,du.phone,o.UID as uid,o.`status`,udi.serial_no as serialNo,o.orderID,o.`desc`, '
|
|
|
+ sql += 'o.price,uo.next_month_activate as nextActivate,uo.iccid,uo.`status` as useStatus, ' \
|
|
|
+ 'uo.`flow_total_usage` as flowTotal, '
|
|
|
+ sql += 'uo.updated_time as upTime, uo.activation_time as acTime,uo.expire_time as epTime '
|
|
|
+ sql += 'FROM orders o '
|
|
|
+ sql += 'LEFT JOIN unicom_combo_order_info uo ON o.orderID = uo.order_id '
|
|
|
+ sql += 'INNER JOIN device_user du ON du.userID = o.userID_id '
|
|
|
+ sql += 'INNER JOIN unicom_device_info udi ON udi.iccid = uo.iccid '
|
|
|
+ return sql
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def query_4G_user_order(request_dict, response):
|
|
|
+ """
|
|
|
+ 查询4G用户订单
|
|
|
+ """
|
|
|
try:
|
|
|
- combo_order_info_qs = UnicomComboOrderInfo.objects.all()
|
|
|
- # 序列号查询
|
|
|
+ page = int(request_dict.get('pageNo', 1))
|
|
|
+ size = int(request_dict.get('pageSize', 10))
|
|
|
+ user_name = request_dict.get('userName', None)
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ serial_no = request_dict.get('serialNo', None)
|
|
|
+ combo_use_type = request_dict.get('comboUseType', None)
|
|
|
+ cursor = connection.cursor()
|
|
|
+ sql = UnicomManageControllerView.query_sql_4g()
|
|
|
+ sql += 'WHERE o.order_type = %s '
|
|
|
+ param_list = [2]
|
|
|
+ if user_name:
|
|
|
+ sql += "and du.username LIKE %s "
|
|
|
+ param_list.append(user_name)
|
|
|
+ if uid:
|
|
|
+ sql += "and o.UID LIKE %s "
|
|
|
+ param_list.append(uid)
|
|
|
if serial_no:
|
|
|
- unicom_device_qs = UnicomDeviceInfo.objects.filter(serial_no__icontains=serial_no).values('serial_no',
|
|
|
- 'user_id',
|
|
|
- 'iccid')
|
|
|
- if not unicom_device_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
- combo_order_info_qs = combo_order_info_qs.filter(iccid__icontains=unicom_device_qs[0]['iccid'])
|
|
|
- # UID查询
|
|
|
- if UID:
|
|
|
- device_qs = Device_Info.objects.filter(UID=UID).values('serial_number').distinct()
|
|
|
- if not device_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
- unicom_device_qs = UnicomDeviceInfo.objects.filter(
|
|
|
- serial_no__icontains=device_qs[0]['serial_number']).values('serial_no', 'user_id', 'iccid')
|
|
|
- if not unicom_device_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
- combo_order_info_qs = combo_order_info_qs.filter(iccid__icontains=unicom_device_qs[0]['iccid'])
|
|
|
- # 状态查询
|
|
|
- if status:
|
|
|
- status = int(status)
|
|
|
- combo_order_info_qs = combo_order_info_qs.filter(status=status)
|
|
|
- if not combo_order_info_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
- total = combo_order_info_qs.count()
|
|
|
- combo_order_info_qs = combo_order_info_qs.order_by('-created_time')[(page - 1) * line:page * line]
|
|
|
- data_list = []
|
|
|
- for combo_order in combo_order_info_qs:
|
|
|
- data = {'userName': '',
|
|
|
- 'UID': '',
|
|
|
- 'iccid': combo_order.iccid,
|
|
|
- 'status': combo_order.status,
|
|
|
- 'order_id': combo_order.order_id,
|
|
|
- 'flow_total_usage': combo_order.flow_total_usage,
|
|
|
- 'next_month_activate': combo_order.next_month_activate,
|
|
|
- 'activationTime': combo_order.activation_time,
|
|
|
- 'expireTime': combo_order.expire_time,
|
|
|
- 'createdTime': combo_order.created_time,
|
|
|
- 'updated_time': combo_order.updated_time}
|
|
|
- unicom_combo_qs = UnicomCombo.objects.filter(id=combo_order.combo_id).values('combo_name', 'price')
|
|
|
- data['price'] = unicom_combo_qs[0]['price'] if unicom_combo_qs.exists() else ''
|
|
|
- data['comboName'] = unicom_combo_qs[0]['combo_name'] if unicom_combo_qs.exists() else ''
|
|
|
- unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid__icontains=combo_order.iccid).values('user_id',
|
|
|
- 'serial_no')
|
|
|
- userID = unicom_device_qs[0]['user_id'] if unicom_device_qs.exists() else ''
|
|
|
- data['serialNo'] = unicom_device_qs[0]['serial_no'] if unicom_device_qs.exists() else ''
|
|
|
- serial_no = data['serialNo']
|
|
|
- device_info_qs = Device_Info.objects.filter(userID__userID=userID, serial_number=serial_no).values(
|
|
|
- 'userID__username', 'UID')
|
|
|
- if device_info_qs.exists():
|
|
|
- nick_name = device_info_qs[0]['userID__username']
|
|
|
- data['userName'] = nick_name
|
|
|
- if data['serialNo'] != '':
|
|
|
- data['UID'] = CommonService.query_serial_with_uid(data['serialNo'])
|
|
|
- if combo_order.status == 1:
|
|
|
- total_flow = UnicomObjeect.current_sim_traffic_usage_details(combo_order.iccid) # 4G总值
|
|
|
- flow_total_usage = combo_order.flow_total_usage # 激活时当月已用流量
|
|
|
+ sql += "and udi.serial_no LIKE %s "
|
|
|
+ param_list.append(serial_no)
|
|
|
+ if combo_use_type:
|
|
|
+ sql += 'and uo.status = %s '
|
|
|
+ param_list.append(int(combo_use_type))
|
|
|
+ cursor.execute(sql, param_list)
|
|
|
+ total = len(cursor.fetchall())
|
|
|
+ param_list.append((page - 1) * size)
|
|
|
+ param_list.append(size, )
|
|
|
+ sql += 'order by o.addTime DESC LIMIT %s,%s '
|
|
|
+ cursor.execute(sql, param_list)
|
|
|
+ data_obj = cursor.fetchall()
|
|
|
+ cursor.close() # 执行完,关闭
|
|
|
+ connection.close()
|
|
|
+ result_list = []
|
|
|
+ col_names = [desc[0] for desc in cursor.description]
|
|
|
+ for item in data_obj:
|
|
|
+ order_dict = dict(zip(col_names, item))
|
|
|
+ if order_dict['status'] == 1:
|
|
|
+ total_flow = UnicomObjeect.current_sim_traffic_usage_details(order_dict['iccid']) # 4G总值
|
|
|
+ flow_total_usage = order_dict['flowTotal'] # 激活时当月已用流量
|
|
|
flow_total_usage = float(flow_total_usage)
|
|
|
- data['using_total'] = total_flow - flow_total_usage
|
|
|
+ order_dict['using_total'] = total_flow - flow_total_usage
|
|
|
else:
|
|
|
- data['using_total'] = 0
|
|
|
- data_list.append(data)
|
|
|
- return response.json(0, {'list': data_list, 'total': total})
|
|
|
+ order_dict['using_total'] = 0
|
|
|
+ result_list.append(order_dict)
|
|
|
+ return response.json(0, {'orderList': result_list, 'total': total})
|
|
|
except Exception as e:
|
|
|
- print(e)
|
|
|
- return response.json(500, repr(e))
|
|
|
+ meg = '异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e))
|
|
|
+ return response.json(500, meg)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def check_sim_user(iccid):
|
|
|
+ """
|
|
|
+ 检查SIM卡用户
|
|
|
+ @param iccid:物联卡
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ u_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid).values('user_id')
|
|
|
+ if not u_device_qs.exists() or not u_device_qs[0]['user_id']:
|
|
|
+ return False
|
|
|
+ return True
|
|
|
|
|
|
@classmethod
|
|
|
def edit_combo(cls, request_dict, response):
|
|
@@ -454,10 +450,10 @@ class UnicomManageControllerView(View):
|
|
|
@param response: 响应对象
|
|
|
@param return:
|
|
|
"""
|
|
|
- userId = request_dict.get('userId', None)
|
|
|
+ userName = request_dict.get('userName', None)
|
|
|
serialNo = request_dict.get('serialNo', None)
|
|
|
comboId = request_dict.get('comboId', None)
|
|
|
- if not all([userId, serialNo, comboId]):
|
|
|
+ if not all([userName, serialNo, comboId]):
|
|
|
return response.json(444)
|
|
|
try:
|
|
|
while transaction.atomic():
|
|
@@ -465,8 +461,10 @@ class UnicomManageControllerView(View):
|
|
|
.values('id', 'combo_name', 'price', 'virtual_price', 'remark', 'combo_type').order_by('sort')
|
|
|
if not combo_info_qs.exists():
|
|
|
return response.json(173)
|
|
|
-
|
|
|
- unicom_device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serialNo, user_id=userId).values \
|
|
|
+ device_user_qs = Device_User.objects.filter(username=userName).values('userID')
|
|
|
+ userID = device_user_qs[0]['userID'] if device_user_qs.exists() else ''
|
|
|
+ unicom_device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serialNo,
|
|
|
+ user_id=userID).values \
|
|
|
('user_id', 'iccid', 'serial_no')
|
|
|
if not unicom_device_info_qs.exists():
|
|
|
return response.json(173)
|
|
@@ -485,7 +483,7 @@ class UnicomManageControllerView(View):
|
|
|
uid = CommonService.query_uid_with_serial(serial_no)
|
|
|
rank_id, ai_rank_id = UnicomComboView.get_cloud_or_ai_combo() # 生成订单必须添加该字段
|
|
|
order_dict = {'orderID': order_id, 'UID': uid, 'rank_id': rank_id, 'ai_rank_id': ai_rank_id,
|
|
|
- 'userID_id': userId, 'desc': combo_info_vo['combo_name'], 'payType': 10,
|
|
|
+ 'userID_id': userID, 'desc': combo_info_vo['combo_name'], 'payType': 10,
|
|
|
'payTime': c_time, 'price': combo_info_vo['price'], 'addTime': c_time,
|
|
|
'updTime': c_time, 'status': 1,
|
|
|
'unify_combo_id': str(combo_info_vo['id']), 'order_type': 2,
|